获取字符串中最长的数串

  • 题目
  • 思路
  • 代码
  • 运行结果
  • 总结

题目

输入一段字符串,包含任意的ACII字符串。
输出字符串中长度最长的数字串,如果数字串长度相同,输出其中各个数字和最大的,如果和一样大,输入位置最前的。
如:输入”asdas213+2331-1221sds3321” 输出:2331

思路

用全局变量来存储最长数串的长度和它的和,然后遇见更大的就替换。

代码

package test;

import java.util.Scanner;

public class CharTest {
    static int Sum = 0;
    static int Length = 0;

    public static void main(String agrs[]) {

        String str = "";
        Scanner sc = new Scanner(System.in);
        str = sc.nextLine();
        sc.close();
        System.out.println(getMaxNumberString(str));

    }

    public static String getMaxNumberString(String str) {
        String maxNumberString = "";
        int sum = 0;
        int length = 0;
        StringBuilder number = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c >= '0' && c <= '9') {
                number.append(c);
                sum = sum + (int) c;
                length = length + 1;
                continue;
            }
            if (number.length() != 0) {
                if (length > Length) {
                    Length = length;
                    Sum = sum;
                    maxNumberString = number.toString();
                    length = 0;
                    sum = 0;
                    number = new StringBuilder();
                    continue;
                }

                if (length == Length) {
                    if (sum > Sum) {
                        Sum = sum;
                        maxNumberString = number.toString();
                        length = 0;
                        sum = 0;
                        number = new StringBuilder();
                        continue;
                    }
                }

            }

        }

        return maxNumberString;

    }
}

运行结果

运行结果

总结

这是第一次用Markdown写博客,好不熟悉,写点简单,当作测试。欢迎一起讨论。

你可能感兴趣的:(字符串处理)