首页 > 试题广场 >

字符串中找出连续最长的数字串

[编程题]字符串中找出连续最长的数字串
  • 热度指数:41506 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
读入一个字符串str,输出字符串str中的连续最长的数字串

输入描述:
个测试输入包含1个测试用例,一个字符串str,长度不超过255。


输出描述:
在一行内输出str中里连续最长的数字串。
示例1

输入

abcd12345ed125ss123456789

输出

123456789
strs = input()
res,ans,temp,tans,fans = 0,0,[],[],''
for i in strs:
    if i.isdigit():
        res+=1
        temp.append(int(i))
    elif not i.isdigit():
        if ans<res:
            ans = res
            tans = temp
            res = 0
            temp = []
        else:
            res = 0
            temp = []
if strs[-1].isdigit():
    if ans<res:
        ans = res
        tans = temp
for i in tans:
    fans += str(i)
print(fans)        
发表于 2021-05-18 20:11:18 回复(1)
import re
input_val = input()
split_char = re.split(r'\D*', input_val)
lst = []
for i in split_char:
    lst.append(len(i)) 
print(split_char[lst.index(max(lst))])

''' 
max(lst)找出lst中最大的元素的值
lst.index(max(lst))找出max(lst)找出lst中最大的元素的值”对应的索引
lst的大小和split_char是一致的,所以直接在split_char使用索引即可
'''

发表于 2019-08-04 13:52:28 回复(0)
s=input()
a=''
for i in s:
    if i.isalpha():
        a=a+' '
    else:
        a=a+i
a=a.split()
a=sorted(a,key=lambda x:len(x))
print(a[-1])
发表于 2019-01-08 19:18:20 回复(0)
最佳解(1楼)的python解法,自己写了一个,但是和这个解法比起来太繁杂了
str_input = list(str(input().split()))
end, max_length, count = 0, 0, 0
for i in range(len(str_input)):
    if '0' <= str_input[i] <= '9':
        count += 1
        if max_length < count:
            end = i
            max_length = count
    else:
        count = 0
print(''.join(str_input[end - max_length + 1: end + 1]))

发表于 2018-12-29 09:04:45 回复(0)
import re
text = input() 
print(max(re.findall(r"[0-9]+", text), key=lambda x:len(x)))
人生苦短, 我用python
编辑于 2018-10-09 17:35:55 回复(0)
from __future__ import print_function
def getcount(str_, length, maxc):
    count = 0
    for i in range(length):
        if str_[i].isdigit():
            count += 1
            if count > maxc:
                maxc = count
        else:
            count = 0
    return maxc

def print_str(str_, length, maxc):
    maxc = getcount(str_, length, maxc)
    # print('maxc:', maxc)
    for i in range(length-maxc+1):
        str_digit = str_[i:i+maxc]
        # print(str_digit)
        if (str_digit.isdigit()):
            for j in range(i,i+maxc):
                print(str_[j], end="")

def main():
    str_ = raw_input()
    length = len(str_)
    maxc = 0
    print_str(str_, length, maxc)

if __name__ == '__main__':
    main()
发表于 2018-08-11 13:59:03 回复(0)
def func(string):
    res=[]
    s=''
    tem=[str(x) for x in range(10)]
    for x in string:
        if x in tem:
            s+=x
        else:
            res.append(s)
            s=''
    res.append(s)
    return sorted(res,key=len,reverse=True)[0]

string=input()
print(func(string))
发表于 2018-07-16 19:22:14 回复(0)
import sys
import re
inputStr = raw_input()
max = 0
resStr = ""
resList = re.findall('\d+',inputStr)
for num in resList:
    length = len(num)
    if length>max:
        max = length
        resStr = num
print resStr
发表于 2018-07-13 14:53:01 回复(0)
Python
n = input().strip()
ans,temp = [],[]
for i in n:
    if 48 <= ord(i) <= 57:
        temp.append(i)
    else:
        ans.append(temp)
        temp = []
ans.append(temp)
ans = sorted(list(filter(None,ans)),key = len)
print(''.join(ans[-1]))

发表于 2018-07-08 22:32:24 回复(0)
import re
import traceback

try:
    n = input()
    pattern = re.compile(r'\d+')  # 查找数字
    result1 = list(map(int,pattern.findall(n)))
    result1.sort(reverse=True)
    print(result1[0])
except:
    traceback.print_exc()
    pass
发表于 2018-06-22 22:45:28 回复(0)
import re
s = input()
ans = re.split(r'\D+', s)#\D匹配一个非数字字符,+匹配前面的子表达式一次或多次(大于等于1次)
print(max(ans, key=len))

发表于 2018-05-23 12:43:21 回复(0)
import re

s = re.findall(r'\d+', input())
print(max(s, key=len))

发表于 2018-04-08 14:59:37 回复(0)
算法时间复杂度O(n),主要解题点在ord函数判断出数字。
str=raw_input()
str=str+'e'
max=max1=0
result=result1=''
for i in range(len(str)):
    if ord(str[i]) in range(48,58):
        max1=max1+1
        result1=result1+str[i]
    else:
        if max1>max:
            max=max1
            result=result1
            result1=''
        else:
            result1=''
        max1=0
print result
发表于 2018-03-27 17:41:48 回复(0)
string = input()
string=string.lower()
num='0123456789'
tmp_str,tmp_str_len='',0
max_str,max_str_len='',0
for i in string:
    if i in num:
        tmp_str+=i
        tmp_str_len+=1
    else:
        if tmp_str_len>max_str_len:
            max_str,max_str_len=tmp_str,tmp_str_len
        tmp_str,tmp_str_len='',0
if tmp_str_len>max_str_len:
    max_str=tmp_str
print(max_str)

发表于 2018-03-14 20:07:46 回复(0)
s = input()
s += '#'
res , L, R = 0, 0, 0
l, r = 0,0
count = 0
for i in range(len(s)):
    if '0'<=s[i] and s[i]<='9':
        r = i
        count += 1
    else:
        if count>res:
            res = count
            L, R = l, r+1
        l = i+1
        count = 0
print(s[L:R])

发表于 2017-09-20 16:25:18 回复(0)

华为的笔试考的这道题:
python解法如下:

a = input()
maxLen, curLen, maxStr, curStr = 0, 0, "", ""

for i, v in enumerate(a):
    if v.isnumeric():
        curLen += 1
        curStr += v
        if curLen >= maxLen:
            maxLen = curLen
            maxStr = curStr
    else:
        curLen = 0
        curStr = ""
print(maxStr)
编辑于 2017-09-07 13:59:50 回复(4)