输入一个长度为
、由数字和小写字母混合构成的字符串
。保证至少存在一个数字子串。
记最长的数字子串长度为
,有
个长度为
的数字子串。在一行上先首尾相连的输出
个长度为
的数字子串(不使用空格分割),随后输出一个逗号,再输出
。
abcd12345ed125ss123058789
123058789,9
11a22b33c
112233,2
在这个样例中,数字子串
长度均为
,都是最长的数字子串。
本题数据已规范为单组询问(2025/01/15)。
while True:
try:
length = 0
s = input().strip()
res = []
start = 0
#数字串起始位置的循环,第一次从0开始
#由于条件为真才能进入while循环,所以+1使得条件为真
#以便于第一次循环能够正常开始
while start+1:
#从起始位置开始往后判断字符是否为数字
for j in range(start,len(s)):
#是数字继续判断下一个
if s[j].isdigit():
continue
#不是数字
else:
#j-start > length判断当前数字串是否是已知的最大长度
if j-start > length:
length = j-start
#如果比已有的数字串长度都大,则需要将数字串的列表清空
res.clear()
#再将最大的放进列表中
res.append(s[start:j])
elif j-start == length:
#如果和已有的最大长度一样大,直接放进列表中
res.append(s[start:j])
#更新起始位置,当前判断索引j位置已经是非数字了
#直接从j的下一个开始判断
start = j+1
break
#此处是判断若for循环结束是因为走到了最后一个元素需要特殊处理
#走到最后一个元素
if j == len(s)-1:
if s[j].isdigit():
#最后一个元素是数字,需要处理
#这里+1,是因为j已经是最后一个索引值,在前面的for循环中不会再往下加一个
if j+1-start > length:
length = j+1-start
res.clear()
res.append(s[start:j+1])
elif j+1-start == length:
length = j+1-start
res.append(s[start:j+1])
#已经判断完了字符串的所有字符,直接退出while循环
break
else:
#最后一个元素不是数字,不用处理,已经判断完了字符串的所有字符,直接退出while循环
break
print("".join(res) + "," + str(length))
except:
break while True: try: str1 = input()#记录string for i in range (len(str1)): if str1[i].isdigit() == False:#根据长度把不是数字的都换成空格 str1=str1.replace(str1[i]," ") str1=str1.split()#以空格区分元素 a=[] for i in range (len(str1)): # 也可用max. a.append(len(str1[i]))#记录每个元素长度 b=list(map(int,a))#转换为int b.sort(reverse=True) #从大到小排序 str2 = "" for i in range (len(str1)): if len(str1[i]) == b[0]:#读取最大长度,当为最大长度串时记录最大长度串的数据。 str2 = str2 + (str1[i]) output = str2 +','+str(b[0])#以逗号隔开并最后显示最大长度 print(output) except: break
while True:
try:
m=input()
list1=[]
list2=[]
v=''
for i in range(len(m)+1):
for j in range(len(m)+1):
if 0<=i<j<=len(m)+1:
list1.append(m[i:j])
for i in list1:
if i.isdigit()==True:
list2.append(i) #得到所有的数字字符串
res=max(list2,key=len,default='') #找到所有的字符串最长的
for j in list2:
if len(str(j))==len(str(res)):
v+=str(j)
print(v+','+str(len(res)))
# if m[i:j].isdigit()==True:
# list1.append(i)
except:
break
class Solution:
def notnum (str):
not_num = 0
i = 0
for i in range(0, len(str)):
if str[i].isalpha() == True:
not_num = 1
return not_num
def max_len_num(a):
left = 0
right = 0
nums = []
while left <= len(a):
while right <= len(a):
if Solution.notnum(a[left:right]) == 0:
nums.append(a[left:right])
right += 1
left += 1
right = 0
max_len = len(max(nums, key=len))
max_nums = []
for num in nums:
if len(num) == max_len:
max_nums.append(num)
return max_nums
while True:
try:
max_nums = Solution.max_len_num(input())
for num in max_nums:
print(num, end='')
print(',', end='')
print(len(max_nums[0]))
except EOFError:
break while True:
try:
max_len, cur_len, longest = 0, 0, ""
s = input()
for i in range(len(s)):
if s[i].isdigit():
cur_len += 1
if cur_len == max_len:
longest += s[i+1-cur_len:i+1]
elif cur_len > max_len:
max_len = cur_len
longest = s[i+1-cur_len:i+1]
else:
cur_len = 0
print("{},{}".format(longest, max_len))
except:
break # 思路:将不是数字的字符全部变成‘a’,再将字符串用a来分割称数组,
# 长度最大的数组的长度即为所求的长度
while True:
try:
s = input().strip()
new_s = ''
for ch in s:
if not ch.isdigit():
new_s += 'a'
else:
new_s += ch
digit_list = list(filter(lambda s: s.isdigit(), new_s.split('a')))
max_len = max(map(len, digit_list))
max_len_digit = []
for digit in digit_list:
if len(digit) == max_len:
max_len_digit.append(digit)
res_str = ''.join(max_len_digit)
print(res_str+','+str(max_len))
except:
break
import re
while True:
try:
stringlist=re.findall(r'[0-9]+', input()) #找到所有数字块
arrlen=list(map(len, stringlist)) #所有数字块长度
res=[] # 最长的数字块挑出来
for k,i in enumerate(arrlen):
if i==max(arrlen):
res.append(stringlist[k])
print("".join(res)+','+str(max(arrlen))) #合并输出
except:
break import re
while True:
try:
s = input().strip()
digit_str = re.findall(r'\d+', s)
print(digit_str)
max_len, res = 0, ''
for i in digit_str:
tmp_len = len(i)
if tmp_len > max_len:
max_len = tmp_len
res = i
elif tmp_len == max_len:
res += i
print('{},{}'.format(res, max_len))
except:
break
while True:
try:
import re
strs=input().strip()
for i in strs:
if not i.isnumeric():
strs=strs.replace(i,'a')
res1=re.sub(r'a+','b',strs)
nlist=list(res1.split('b'))
outlist=sorted(nlist,key=lambda i:len(i),reverse=True)
maxnum=int(len(outlist[0]))
out=''
for i in nlist:
if len(i)==maxnum:
out+=i
out=out+','+str(maxnum)
print(out)
except:
break