连续最长数字串
1、题目要求
读入一个字符串str,输出字符串str中的连续最长的数字串
1.1 输入例子
abcd12345ed125ss123456789
1.2 输出结果
123456789
2、程序分析
- 遍历字符串
- 遇到数字时,开始进行数字串的记录,因此需要一个变量来标识是不是进入到了数字串的记录状态中
- 最容易出错的是循环结束时,对最后一个字符的检查,如果最后一个字符是数字,那么就会影响到数字串记录状态的结束
3、示例代码
#coding=utf-8
'''
读入一个字符串str,输出字符串str中的连续最长的数字串
'''
string = 'abcd12345ed125ss123456789oik'
def get_long_number(string):
b_start = False #标识是否遇到了数字串
start_index = -1 #数字串开始的位置
sub_len = 0 #数字串的长度
tmp_len = 0
for index,item in enumerate(string):
if item.isdigit():
if not b_start:
b_start =True
start_index = index
tmp_len = 1
else:
tmp_len += 1
else:
b_start = False
if tmp_len > sub_len:
sub_len = tmp_len
# 这里是最容易出错的地方,如果最后一个字符还是数字,那么b_start = False
# 就不会执行,循环结束时,sub_len没有更新
if b_start:
if tmp_len > sub_len:
sub_len = tmp_len
return string[start_index:start_index+sub_len]
print get_long_number(string)