最长数字字符串

题目一 最长数字字符串

给定一个字符串,输出字符串中最长的数字串,并把这个数字串的长度输出。

请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;

注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!

输入描述:
一个字符串
输出描述:
输出最长的数字串,输出最长数字串个数;
中间以逗号(,)隔开;

示例1
输入
abcd12345ed125ss123058789
输出
123058789,9

备注:
1、如果存在长度相同的连续数字串,则输出最后一个连续数字串;
2、数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”;
3、如果没有数字,则输出空字符串(“”)而不是NULL;
解题思路:

首先将数字串拿出来,然后在遍历数字串长度找出最长的值

str_input = raw_input()
str_list = []
str_o = ''
str_input_add = str_input + " "
for i in str_input_add:
    if i.isdigit():
        str_o = str_o + i
    else:
        if str_o:
            str_list.append(str_o)
        str_o = ''
        continue
print str_list

if not str_list:
    print ""
else:
    res = str_list[0]
    for j in str_list:
        if len(j) >= len(res):
            res = j
        else:
            pass
    print res, len(res)

 

可以使用正则表达式和循环来实现该函数,代码如下: ```javascript function findLongestNumberString(str) { let longestStart = -1; // 最长数字字符串的开始下标位置 let longestLength = 0; // 最长数字字符串的长度 let currentStart = -1; // 当前数字字符串的开始下标位置 let currentLength = 0; // 当前数字字符串的长度 for (let i = 0; i < str.length; i++) { // 如果当前字符是数字,则更新当前数字字符串的长度和开始下标位置 if (/\d/.test(str[i])) { if (currentStart === -1) { currentStart = i; } currentLength++; } else { // 如果当前字符不是数字,则比较当前数字字符串最长数字字符串的长度 if (currentLength > longestLength) { longestStart = currentStart; longestLength = currentLength; } currentStart = -1; currentLength = 0; } } // 如果最长数字字符串出现在字符串结尾,则需要再次比较一次 if (currentLength > longestLength) { longestStart = currentStart; longestLength = currentLength; } return longestStart; } // 示例 let str = "12abc3de33547f9g"; let start = findLongestNumberString(str); console.log(start); // 输出 8 ``` 这个函数的思路是先遍历整个字符串,当遇到数字字符时,更新当前数字字符串的长度和开始下标位置,当遇到非数字字符时,比较当前数字字符串最长数字字符串的长度,并更新最长数字字符串的长度和开始下标位置。最后再次比较一次,如果最长数字字符串出现在字符串结尾,则需要再次更新最长数字字符串的长度和开始下标位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值