【算法题】HJ92 在字符串中找出连续最长的数字串

  • A+
所属分类:编程茶楼


共计 1170 个字符,预计需要花费 3 分钟才能阅读完成。

输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)
本题含有多组样例输入。
数据范围:字符串长度 1 \le n \le 200 \1≤n≤200 , 保证每组输入都至少含有一个数字

输入:输入一个字符串。1<=len(字符串)<=200
输出:输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。

输入
abcd12345ed125ss123058789
a8a72a6a5yy98y65ee1r2

输出
123058789,9
729865,2

说明:
样例一最长的数字子串为123058789,长度为9
样例二最长的数字子串有72,98,65,长度都为2

import java.util.Scanner;

/**
 * @since 2022-04-24
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            StringBuilder digitalStr = new StringBuilder();
            StringBuilder digitalStr1 = findDigitalStr(line, digitalStr, 0, 0);
            System.out.println(digitalStr1.toString());
        }



    }

    private static StringBuilder findDigitalStr(String line, StringBuilder digitalStr, int index, int count) {
        if (index >= line.length()) {
            return digitalStr.append(",").append(count);
        }
        StringBuilder temp = new StringBuilder();
        for (int i = index; i < line.length(); i++) {
            index++;
            char c = line.charAt(i);
            if (47 < c && c < 58) {
                temp.append(c);
                continue;
            }

            break;
        }
        if (temp.length() > 0 && temp.length() == count) {
            digitalStr.append(temp);
        }
        if (temp.length() > count) {
            count = temp.length();
            digitalStr = temp;
        }
        return findDigitalStr(line, digitalStr, index, count);

    }
}
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: