题目如下:输入一段字符串,返回此段字符串中最大的数字串,并输出最大字符的个数。
我的代码如下:
ls_s1=[]
n=0
list1=[]
list2=[]
s2=input("Please enter a string:")
for i in range(0,len(s2)):
if s2[i].isdigit()==True:
n+=1
ls_s1.append(s2[i])
else:
list1.append(n)
result=''.join(ls_s1)
list2.append(result)
n=0
ls_s1=[]
n=max(list1)
s_max=max(list2,key=len,default='')
print(n)
print(s_max)
但是我这个代码有BUG,即最后一个字符不为字母时无法正确输出。
我在网上找到了如下答案:
# coding=utf-8
import sys
def solve():
for line in sys.stdin:
# 字符串转列表进行遍历
str = list(line)
count = 0
length = 0
temp = []
dig = []
for i in range(str.__len__()):
if (str[i] >= '0' and str[i] <= '9'):
# 数字加一
count += 1
temp.append(str[i])
else:
if count >= length:
# 数字串大于之前的,由于题目要求长度相等输出最后一串,所以这里要用大于等于
length = count
count = 0
dig = temp.copy()
temp = []
else:
# 数字串较短则清空
temp = []
count = 0
# 结果输出
result = ''.join(dig)
print("%s,%d" % (result, length))
if __name__ == "__main__":
solve()
我感觉这个代码和我遇到的问题一样,但是它却能进行正确输出。
例如,输入字符串123abc12345
在我的代码中,当进行到字符串中最后一个字符中,即5时,无法进入下一个else,即无法刷新列表
但在第二个代码中,却能进行正确输出,我在第二个if语句加入print(dig)时,发现其中存储了12345,最后一个位数字,不能if和else都满足吧?这让我有些矛盾。
求教各位,1.我的代码在现有的形式下如何修改;2.第二个代码中最后字符5怎么进入else循环的。