[R] Lowest number in a numeric string
Petr Savicky
savicky at cs.cas.cz
Thu Jun 14 11:36:07 CEST 2012
On Thu, Jun 14, 2012 at 01:08:53AM -0700, mogwai84 wrote:
> Hi all,
>
> I've got a very long numeric string. I want to find the lowest number that
> isn't in that string.
>
> E.G
>
> String = 123456
> Therefore 7 is the lowest number not in that string
>
> E.G.2
>
> String = 1234567891011
> Therefore 13 is the lowest number not in that string.
Hi.
Try the following.
s <- "1234567891011"
n <- nchar(s)
x <- rep(NA, times=choose(n+1, 2))
k <- 0
for (i in 1:n) {
for (j in i:n) {
k <- k + 1
x[k] <- as.numeric(substr(s, i, j))
}
}
for (i in 1:1000) {
if (! i %in% x) break
}
print(i)
[1] 13
For a longer string, we may use the fact that the number of the numbers included
in the string is at most choose(n+1, 2). This implies that the lowest missing
number is at most choose(n+1, 2) + 1. Due to this, we can consider only
sequencies of digits of length at most ceiling(log10(choose(n+1, 2) + 1)).
Hope this helps.
Petr Savicky.
More information about the R-help
mailing list