输入一个长度为
、由数字和小写字母混合构成的字符串
。保证至少存在一个数字子串。
记最长的数字子串长度为
,有
个长度为
的数字子串。在一行上先首尾相连的输出
个长度为
的数字子串(不使用空格分割),随后输出一个逗号,再输出
。
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