题解 | #字符串中找出连续最长的数字串#

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

https://www.nowcoder.com/practice/bd891093881d4ddf9e56e7cc8416562d

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String w = sc.nextLine();
            List<Map<String,Integer>> list = new ArrayList<>();
            char[] arr = w.toCharArray();
            //连续index   start
            int start = -1;
            //连续index   end
            int end = -1;
            for(int i = 0;i<arr.length-1;i++){
                int be = Integer.valueOf(arr[i]);
                int ne = Integer.valueOf(arr[i+1]);
                if((be+1)==ne){
                    //初始连续
                    if (start==-1){
                        start = i;
                    }
                    //结尾处字符串连续
                    if (i==arr.length-2){
                        end = i+1;
                        Map<String,Integer> map = new HashMap<>();
                        //连续index   start
                        map.put("start",start);
                        //连续index   end
                        map.put("end",end);
                        //start至end间隔
                        map.put("abs",end-start+1);
                        list.add(map);
                    }
                } else {
                    //连续结束
                    if (start!=-1){
                        end = i;
                        Map<String,Integer> map = new HashMap<>();
                        //连续index   start
                        map.put("start",start);
                        //连续index   end
                        map.put("end",end);
                        //start至end间隔
                        map.put("abs",end-start+1);
                        list.add(map);
                    }
                    //不连续保证index为初始状态
                    start = -1;
                    end = -1;
                }
            }
            if (list.size()>0){
                //根据abs(start至end间隔)排序
                list.sort(Comparator.comparing(a -> a.get("abs")));
                //取间隔最大
                Map<String, Integer> map = list.get(list.size() - 1);
                Integer start1 = map.get("start");
                Integer end1 = map.get("end");
                System.out.println(w.substring(start1,end1+1));

            }
        }

    }


#字节测试开发一面面经#
全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务