do-exercise-最长的数字串

问题描述

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

输入描述

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

输出描述

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

思路分析

对于一个字符串,无非包含2个部分,即字母和数字;输出字符串中连续最长的数字串,实际就是遍历字符串寻找数字字符;
可以尝试使用这样的思路来解决:定义2个空字符串,遍历原始输入的字符串,如果当前遍历到的字符是数字字符,就将该字符存储到第一个空字符串中,继续遍历最初输入的字符串,如果下一个字符依然是数字字符,继续存储到第一个字符串中,当下一个字符不再是数字字符时,就将当前得到的这个数字字符串整体存储带第二个字符串中,继续遍历字符串执行上述操作,当第一个字符串中的字符长度大于第二个字符串的长度时,更新第二个字符串的内容,最终第二个字符串中的结果即为最长的数字串;

题目链接:最长的数字串
下面是具体的代码实现:

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:最长的数字串
 * Date: 2022-11-11
 * Time: 0:21
 */
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner scan=new Scanner(System.in);
        String str=scan.nextLine();
        String cur="";
        String ret="";
        int i=0;
        for (i=0;i<str.length();i++){
    
    
            char ch=str.charAt(i);
            if (ch>='0'&&ch<='9'){
    
    
                cur=cur+ch+"";
                if (cur.length()>ret.length()){
    
    
                    ret=cur;

                }
            }else{
    
    
                if (cur.length()>ret.length()){
    
    
                    ret=cur;
                }
                cur="";
            }
        }
        if (i==str.length()&&cur.length()>ret.length()){
    
    
            ret=cur;
        }
        System.out.println(ret);
    }
}

需要格外注意的是,最长的数字串在整个字符串末尾的情况,由于下标值在遍历过程中始终是小于字符串长度的,因此需要额外判断当下标值与字符串长度相等时,cur中的子串长度是否大于ret中的子串长度,在必要的情况下对ret的内容进行更新;

over!

猜你喜欢

转载自blog.csdn.net/weixin_54175406/article/details/127798754