描述:输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)
本题含有多组样例输入。
数据范围:字符串长度 1 \le n \le 200 \1≤n≤200 , 保证每组输入都至少含有一个数字
输入描述:输入一个字符串。1<=len(字符串)<=200
输出描述:输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。
输入:
abcd12345ed125ss123058789
a8a72a6a5yy98y65ee1r2
输出:
123058789,9
729865,2
说明:
样例一最长的数字子串为123058789,长度为9
样例二最长的数字子串有72,98,65,长度都为2
# 1、whiletruetryinputsplit,exam-instr
# 2、for循环判断i在0-9范围内则加入temp,如不在则加入reslis,temp为''空
# 3、reslis求每个i的长度,max取最大长度,遍历每个i;
# 41、如发现多个则加入新newlis,最后join组合后len
# 42、如发现1个则输出newlis及len
def exam(instr):
instr = instr
temp = ''
lis = []
length = 0
res = []
onstr = '0123456789'
for i in range(len(instr)):
# 此处只能用rangelen,下面判断结尾字符时候,用len-1可判断,否则没法识别是否最后一位
# print('i:',i)
if instr[i] in onstr:
# print('i===:',instr[i])
length += 1
temp += instr[i]
# 最后一位为数字时,temp加了,但是没加入到lis
if i == len(instr)-1 and instr[i] in onstr:
lis.append(temp)
# 最后一位时单独加入lis,无需重置temp和length
if instr[i] not in onstr and length !=0:
lis.append(temp)
# print('temp=====',temp)
# lis==== ['8', '72', '6', '5', '98', '65', '1']
# print('lis====',lis)
# lis: ['8', '72', '6', '5', '98', '65', '1', '2']
temp = ''
length = 0
continue
if instr[i] not in onstr and length == 0:
temp = ''
length = 0
continue
# print('lis: ',lis)
# ['12345', '125', '123058789']
# ['8', '72', '72', '6', '5', '98', '65', '1', '2']
# big = max(list(map(int,lis)))
# print(big)
max_len = max([len(i) for i in lis])
# print(max_len)
# 0 2
cnt = 0
res = ''
for i in lis:
if len(i) == max_len:
res += str(i)
print(res +','+ str(max_len))
# 123058789,9
# 72729865,2
while True:
try:
instr = input().strip()
exam(instr=instr)
except:
break