The challenge

You are be given a string that has lowercase letters and numbers. Your task is to compare the number groupings and return the largest number. Numbers will not have leading zeros.

For example, solve("gh12cdy695m1") = 695, because this is the largest of all number groupings.

The solution in Python code

Option 1:

1
2
3
import re
def solve(s):
    return max(map(int,re.findall(r"(\d+)", s)))

Option 2:

1
2
def solve(s):
    return max(map(int,"".join(" " if x.isalpha() else x for x in s).split()))

Option 3:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def solve(s):
    i, maxn, L = 0, 0, len(s)
    numStart = False
    while i < L:
        if s[i].isdigit():
            j = i+1
            while j<L and s[j].isdigit():
                j += 1
            if int(s[i:j]) > maxn:
                maxn = int(s[i:j])
            i = j+1
        else:
            i += 1
    return maxn

Test cases to validate our solution

1
2
3
4
5
6
test.it("Basic tests")
test.assert_equals(solve('gh12cdy695m1'),695)
test.assert_equals(solve('2ti9iei7qhr5'),9)
test.assert_equals(solve('vih61w8oohj5'),61)
test.assert_equals(solve('f7g42g16hcu5'),42)
test.assert_equals(solve('lu1j8qbbb85'),85)