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

 思路:

首先要先定义三个整型变量count,max,end,count记录数字串中数字的个数,max记录数字串的最大个数,end记录max对应的字符串中最后一个数字的下标。

然后,利用for循环遍历字符串,再利用str.charAt将字符串转成char型字符,因为每个字符都对应一个ASCII码,所以可以利用if语句将数字串筛选出来并计数,如果max<count更新max中的数据,然后将max对应的字符串中最后一个数字的下标赋值给end;如果ASCII不再'0'—'9'之中说明是不是数字,那么将计数器count清零重新开始计数。

最后利用substring截取max对应的数字串,其范围是end-max+1 —— end+1,(关于这个范围的确定可以举一个例子,比如:ab123,其中最长数字串是123,此时end==4,如果想知道数字串的开头,就要减掉数字串的 长度-1,因为end所处在数字串的结尾占了一个长度要减掉 即end-3-1)。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();
            int count = 0;
            int max  = 0;
            int end = 0;
            for (int i = 0; i < str.length(); i++) {
                char ch = str.charAt(i);
                if(ch>='0'&&ch<='9'){
                    count++;
                    if(max<count){
                        max = count;
                        end = i;
                    }
                }
                else{
                    count = 0;
                }
            }
          System.out.println(str.substring(end-max+1,end+1));//substring截取括号范围内的内容
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值