hi,大家好,今天为大家带来一道题目
OR59 字符串中找出连续最长的数字串
描述
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:
个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述:
在一行内输出str中里连续最长的数字串。
示例1
输入:
abcd12345ed125ss123456789复制输出:
123456789
来说一说这个题的思路
1.首先是读入一个字符串
2.定义两个字符串,存放值
3.比较
4.打印结果
现在重点解释第二个和第三个,我来画个图
cur存放的是数字集合,ret存放的是结果,来说一下这个过程
当i下标从1开始走,遇到数字就放到cur字符串中,遇到字母就停止,进行cur和ret长度的比较
如果cur长度大于ret长度,那么就把cur赋给ret
就像下图中展示的那样
现在继续往下走,当i=4时,将4放到cur中,再往后走,又遇到字母,那么再次判断是否cur长度>ret长度,如果不满足,就让cur变为空字符串,如下图
然后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<str.length();i++){
char ch=str.charAt(i);
if(ch>='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);
}
}
这就是今天的题目了,再接再厉!!!一起加油啊💖💖💖