'''寻找最大连续子串和''' def find_max_sub_sum(data): if not data: return None sub = data[0] submax = data[0] for i in range(1, len(data)): sub = max(sub+data[i], data[i]) submax = max(submax, sub) return submax '''寻找最长的数字串''' def find_longest_num(s): if not s: return '' i = 0 maxNumLen = 0 while i < len(s): if s[i].isdigit(): startNum = i numLen = 0 while i < len(s) and s[i].isdigit(): numLen += 1 i += 1 '''比较长度是否超过前面保存的最大长度,这里如果有相同长度的子串,则取后面的,如果要取前面的,则maxNumLen < numLen即可''' if numLen and maxNumLen <= numLen: maxNumLen = numLen sub = '' #每次sub需要清空 for j in range(startNum,startNum+numLen): sub += s[j] i += 1 return sub,maxNumLen if __name__ == '__main__': str = 'abcd12345ed123ss123456789' b = [-2, -1 ,3 ,-6, 20, 7, -34] print(find_longest_num(str)) #('123456789', 9) print(find_max_sub_sum(b)) #27