java_取数组中最长的一串数字(OJ)

思路:

定义两个字符串 cur,ret

cur:用来拼接数字字符串,只要是连续的数字就加上去

ret:用来存放旧的cur加过的数字字符串,和新的比较谁长就取谁

遍历完之后再进行比较一次输出ret就行了

具体实现代码(结合注释)

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);  //.in代表从键盘读入
        while(scanner.hasNextLine()) {
            String str1 = scanner.nextLine();
            String cur = "";
            String ret = "";
            //这个i是有讲究的,考虑到最后for循环外面还要使用,就提前把他定义到外面
            int i = 0;
            for (; i < str1.length(); i++) {
                char ch = str1.charAt(i);
                   //如果是数字就进行拼接
                    if(ch <= '9' && ch >= '0') {
                        //字符串拼接
                        cur = cur + ch + "";
                    //如果不是数字,并且cur大于了ret就把cur 赋值给ret ,如果不满足说明ret中的数组大于了cur,就不用进行赋值,然后把cur置为空
                    }else {
                        if(cur.length() > ret.length()) {
                            ret  = cur;
                            //赋值完之后也要进行,置空防止在旧字符串中继续拼接数字
                             cur = "";
                        }else {
                            cur = "";
                        }
                    }
            }
            //i 已经走完了,但是最后的字符串没有进行比较
            //这时候就可以判断i是否走完,如果i走完了,就进行最后一次的判断
            if(cur.length() > ret.length() && (i == str1.length())) {
                ret = cur;
            }
            System.out.println(ret.toString());
        }
    }

运行结果

 每日一言

伟大的成绩和辛勤劳动是成正比例的,有一分劳动就有一分收获,日积月累,从少到多,奇迹就可以创造出来          -鲁迅

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值