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

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

http://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec

清晰!遍历一遍获取长度最大值+正则匹配判断,时间复杂度O(n)

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String string = sc.nextLine();
            doSearch(string);
        }
    }
    public static void doSearch(String string){
        int n = 0,maxOne = 0;//计数变量
        // 遍历一遍获取长度最大值,时间复杂度O(n)
        for(int i=0; i < string.length(); i++){
            if(Character.isDigit(string.charAt(i))){
                n++;
                maxOne = Integer.max(maxOne,n);
            }else{
                n = 0;
            }
        }
        // 再遍历一遍获取长度为最大值的子串,并判断子串中是否全是数字,时间复杂度O(n)
        StringBuilder sb = new StringBuilder(); 
        for(int i = 0; i <= string.length() - maxOne; i ++){
            String str = string.substring(i, i + maxOne);
            if(0 == str.replaceAll("[0-9]", "").length())){
                sb.append(str);
            }
        }
        System.out.println(sb+","+ maxOne);
    }
}
全部评论
大神
1 回复 分享
发布于 2022-07-02 23:45

相关推荐

评论
7
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务