Java篇—字符串中连续最长的数字串

题目描述:

读入一个字符串str,输出字符串str中连续最长的数字串

输入描述:

每个测试输入包含1个测试用例,一个字符串str,长度不超过255。

输出描述:

在一行内输出str中里连续最长的数字串和长度。

输入样例:

abcd12345ed125ss123456789

输出样例:

123456789,9

题目解析:

step 1:将输入的字符串转化为字符数组;

step 2:创建StringBuffer或者String对象,将遍历后符合条件的数字字符追加到其后,不符合条件则追加空格;

step 3:创建String数组,对步骤二的StringBuffer或者String对象进行分割(以一个或者多空格);

step 4:创建maxSize(保存连续最长的数字串),遍历String数组,不断更新maxSize的值;

step 5:判断maxSize和String数组中的元素长度是否相等,相等直接输出即可(如果有相同长度,以逗号分隔);

step 6:输出maxSize的值,即为连续最长数字串的长度。

详细代码:

import java.util.Scanner;
public class Exercise19 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            //str接收输入的字符串
            String str = sc.nextLine();
            //判断str的合法性
            if(str.length() == 0 || str == null || str.length() > 255){
                throw new UnsupportedOperationException("输入的字符串不合法!");
            }
            StringBuffer sb = new StringBuffer();
            for (char ch:str.toCharArray()) {
                //如果字符范围是在['0','9'],利用append方法将其加入到sb中
                if(ch >= '0' && ch <= '9'){
                    sb.append(ch);
                }else{
                    //如果不是数字字符,将空格加入到sb中
                    sb.append(" ");
                }
            }
            //将sb转为字符串
            String str1 = sb.toString();

//            //定义一个str1用以保存更改后的字符串
//            String str1 = "";
//            for (char ch:str.toCharArray()) {
//                //如果字符范围是在['0','9'],那么直接追加到str1中
//                if(ch >= '0' && ch <= '9'){
//                    str1 += ch;
//                }else{
//                    //如果不是数字字符,将其变为空格,追加到str1中
//                    str1 += " ";
//                }
//            }

            //将str1以一个或者多个空格进行切割,存入到nums中
            String[] nums = str1.split("\\s+");
            //maxSize存放最长连续数字串的长度
            int maxSize = 0;
            for (int i = 0; i < nums.length; i++) {
                //如果String数组中的任意一个变量的长度大于maxSize,则更新maxSize的值
                maxSize = nums[i].length() > maxSize ? nums[i].length() : maxSize;
            }
            for (int i = 0; i < nums.length; i++) {
                //如果变量长度等于最大长度(连续数字串的长度),则进行输出(变量长度相等时,都进行输出)
                if(maxSize == nums[i].length()){
                    //打印变量后,以逗号进行分割
                    System.out.print(nums[i] + ",");
                }
            }
            //打印变量的长度
            System.out.println(maxSize);
        }
    }
}

 

心灵鸡汤:想得终会得,别轻言放弃!

你可能感兴趣的:(学习历程,剑指Offer)