寻找最大连续子串和以及寻找最长数字串

来源:互联网 发布:西安航空学院网络教育 编辑:程序博客网 时间:2024/06/06 04:00
'''寻找最大连续子串和'''def find_max_sub_sum(data):if not data:return Nonesub = 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 = 0maxNumLen = 0while i < len(s):if s[i].isdigit():startNum = inumLen = 0while i < len(s) and s[i].isdigit():numLen += 1i += 1'''比较长度是否超过前面保存的最大长度,这里如果有相同长度的子串,则取后面的,如果要取前面的,则maxNumLen < numLen即可'''if numLen and maxNumLen <= numLen:maxNumLen = numLensub = ''    #每次sub需要清空for j in range(startNum,startNum+numLen):sub += s[j]i += 1return sub,maxNumLenif __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

原创粉丝点击