牛客网简单题型练习第三弹

 

 

代码示例:

Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        //按照非数字分割成数组  ah19iswm222345   --> 19 222345 也就是说长度最长的是想要的
        String[] split = s.split("[^1-9]");
        String s1 = ""; //定义一个空字符串
        for (int i = 0; i < split.length; i++) {
            if (s1.length() < split[i].length()) {
                s1 = split[i];
            }
        }
        System.out.println(s1);
    }

 

中间知识点:

//正则表达式 [^1-9] 不是1-9的数字

我得详细介绍下split:

先上代码

String ss = ",aa,bb,cc,dd,,,";

String[] array = ss.split(",");

看清楚

aa前面有个逗号!!!!

当我们用split进行逗号分割时

你猜数组长度是多少?

是5!!!

循环遍历 输出结果:

5代表是分割后的数组长度

代码为

System.out.println(array.length);//结果是5,而不是预想中的8

 看了这个案例好像明白了

1.你用什么分割 就是用什么当成一把刀 这个刀割完了也就不存在了

2.这个刀前面有空格 都要算一亩地啊

回到我们的题目来

也就是说:

我们用不是数字的字母分割 那分割后的也就没字母了

举个例子:

//按照非数字分割成数组  ah19iswm222345   -->
//会分割成 19  、 222345
//说要选择数字连续最多的
//那我们选择长度最长的 也就是了

因为我们要输出 所以我们需要定义一个新的字符串 但是内容我们不知道 所以我们需要定义一个新的空字符串

 String s1 = ""; //定义一个空字符串

因为我们要选择 字符串长度最长的

而没有什么比空字符串更短了

所以我们在循环时 慢慢赋值给空字符串

在循环中 如果循环里的字符串 比 赋值给的空字符串 长度长 那进行替换

反正 一圈循环完 我们的空字符串的值 需要是 最长的

所以我们代码是:

String s1 = ""; //定义一个空字符串
        for (int i = 0; i < split.length; i++) {
            if (s1.length() < split[i].length()) {
                s1 = split[i];
            }
        }

再说点……

在循环中,一步步来 ,首先是空字符串 因为空字符串是最短的字符串长度了,所以第一次循环,一定会把数组第一个也就是split[0] 复制给空字符串的 

那空字符串就有数值了 也就相应的有长度了

那第二次循环 如果长度比第一次的长度大 那就把这个值赋给s1(原来是空字符串s1,循环一次是有了第一次循环数值的s1)

第三次同上 继续比较 但凡比更新后的s1的长度长,那就替换赋值给s1

这样循环下来 s1一定是拥有了循环里最长的数值

最后输出 最长的连续数字 

System.out.println(s1);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值