算法强化每日一题--字符串中找出连续最长的数字串

                算法强化每日一题--字符串中找出连续最长的数字串_第1张图片

 

hi,大家好,今天为大家带来一道题目

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

描述

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

输入描述:

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

输出描述:

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

示例1

输入:

abcd12345ed125ss123456789

复制输出:

123456789

来说一说这个题的思路

1.首先是读入一个字符串

2.定义两个字符串,存放值

3.比较

4.打印结果

现在重点解释第二个和第三个,我来画个图

算法强化每日一题--字符串中找出连续最长的数字串_第2张图片

 

cur存放的是数字集合,ret存放的是结果,来说一下这个过程

当i下标从1开始走,遇到数字就放到cur字符串中,遇到字母就停止,进行cur和ret长度的比较

如果cur长度大于ret长度,那么就把cur赋给ret

就像下图中展示的那样

算法强化每日一题--字符串中找出连续最长的数字串_第3张图片

 

现在继续往下走,当i=4时,将4放到cur中,再往后走,又遇到字母,那么再次判断是否cur长度>ret长度,如果不满足,就让cur变为空字符串,如下图

算法强化每日一题--字符串中找出连续最长的数字串_第4张图片

 

然后i接着往后走,将56789全都放到cur中,当i==数组长度时,并且cur的长度大于ret的长度时,就更新ret的长度,最后打印

思路就是这样的,这个考虑i==str.length()容易被略过,在刷题的时候,要记得这个点!!!

现在写代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

    //先读入一个字符串
        Scanner scanner=new Scanner(System.in);
        String cur="";
        String ret="";
        String str=scanner.nextLine();
        int i=0;
        for(i=0;i='0'&&ch<='9'){
                cur=cur+ch+"";//因为ch是字符,加一个引号就变成字符串了
            }else{
                if(cur.length()>ret.length()){
                    ret=cur;
                }else{
                    cur="";
                }
            }


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

    }
}

                        算法强化每日一题--字符串中找出连续最长的数字串_第5张图片

 

这就是今天的题目了,再接再厉!!!一起加油啊

你可能感兴趣的:(算法强化,算法,java,servlet)