《好未来编程题》字符串中找出连续最长的数字串

本文介绍了一个简单的算法,用于从输入的字符串中找出并返回最长的连续数字串。通过逐字符扫描,一旦发现数字则继续检查后续字符直到遇到非数字字符为止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:
个测试输入包含1个测试用例,一个字符串str,长度不超过255。

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

abcd12345ed125ss123456789
输出

123456789

解析:该题目不难,但是提交的时候有注意点,就是在while里需要加break才能通过,无语了,貌似不支持连续测试的样子,ok,直接上代码了。

思考:回头想了想,其实该题目没有说的很清楚,比如有可能连续的最长子串不止一个,输出第一个?还是最后一个?还是都输出?所以题目的意思应该是假定只有一个最长的连续子串才。

import java.util.Scanner;
/**
 * Created by Administrator on 2017/8/8.
 */
public class Main {

    public static String maxSubNumbers(String s){
        String result="";
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)>='0'&&s.charAt(i)<='9'){//当前的字符是数字了
                int count=1;//计数一次
                int index=i;//存储当前的截止索引
                for(int j=i+1;j<s.length();j++){//从当前的下一个字符开始找
                    if(s.charAt(j)>='0'&&s.charAt(j)<='9'){
                        count++;//找到了就计数
                        index=j;//需要保存当前的索引,便于后面求子串
                    }else {
                        break;
                    }
                }
                if(count>=result.length()){
                    result=s.substring(i,index+1);
                }
            }else {
                continue;
            }
        }

        return result;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            String s=sc.next();
            System.out.println(maxSubNumbers(s).trim());
            break;
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值