春招第一步,算法伴我行
头条之前面试中有一道算法题:寻找字符串中最大的数字。如字符串"AF43FDS5432FFG3FE9FNE2312100"中最大数字为2312100。
我的想法是从头遍历该字符串,记录连续数字的最大和current,以及存储所有数字的列表result,将每一位字符转换成数值,如果在0-9范围内,就统计这一位的数字,并且结果进行调整:current = 10*current+num,result.append(current)
。如果不满足,即这一位是字符,则将current置位0,重新寻找数字。
具体代码如下:
class Solution(object):
def FindMaxinStr(self, s):
if not s:
return 0
result = []
current = 0
for c in s:
num = ord(c) - ord('0')
if (num<=9 and num>=0):
current = current*10+num
result.append(current)
else:
current = 0
return max(result)
s = "AF43FDS5432FFG3FE9FNE2312100"
print(Solution().FindMaxinStr(s))