Java_[字符串中找出连续最长的数字串]读入一个字符串str,输出字符串str中的连续最长的数字串
程序员文章站
2022-05-29 14:37:36
...
描述
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:
每个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述:
在一行内输出str中里连续最长的数字串。
示例1
输入:
abcd12345ed125ss123456789
输出:
123456789
这是做题链接,看完本篇文章可以点开来试试~~~
解题思路:
可以定义两个字符串,一个用来存放当前遍历过程中遇到的数字串,名字为tmp;一个用来存放此时最长的数字串,名字为ans。若当前tmp的长度大于ans,则将tmp中的内容复制给ans,字符串中的内容更改可以直接使用引用赋值;若当前tmp的长度小于ans,则舍弃tmp中存放的数字串。
注意:
字符串中元素删除不能使用null,这样会使整个字符串的指向为空,正确的做法应该为将字符串赋值为 “” ,这样可以解决字符串指向问题。
在将数字字符加入到tmp中时,tmp为字符串类型,需要加入的元素是字符型,强加会报错,正确的做法是在字符型后加 “” ,这样不会增加新的元素,但会使前一个字符类型被转换为字符型。
若最长数字串在最后时,定义的 i 会被字符串的长度限制,虽然tmp中存放的是最长数字串,但是赋值给ans的操作并不会被执行,所以需要在最后一步重新判断两个字符串的长度,手动执行赋值语句。
以下是Java解决问题代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.nextLine();
String tmp = "";//用来存放每次遍历时遇到的连续数字串
String ans = "";//用来存放最长的连续数字串并输出
int i = 0;
while(i < input.length()) {
if(input.charAt(i) >= '0' && input.charAt(i) <= '9') {
tmp += input.charAt(i) + "";//遇到数字就加到tmp中
}else {
if(tmp.length() > ans.length()) {//此时tmp中存放的数字串更长
ans = tmp;
tmp = "";
}else {//清空当前tmp字符串,用来存放下一个
tmp = "";
}
}
i++;
}
if(tmp.length() > ans.length()) {//若最长数字串在最后,i的值会被限制不能进入循环,此时需要做最后一次判断
ans = tmp;
}
System.out.println(ans);
}
}
推荐阅读
-
字符串中找出连续最长的数字串:读入一个字符串str,输出字符串str中的连续最长的数字串;合法括号的判断:给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)
-
《每日一题》字符串中找出连续最长的数字串
-
Java_[字符串中找出连续最长的数字串]读入一个字符串str,输出字符串str中的连续最长的数字串
-
编程题:将一个字符串中连续最长的数字串打印出来
-
请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串
-
[每日一题]48:字符串中找出连续最长的数字串
-
读入一个字符串str,输出字符串str中的连续最长的数字串
-
字符串中找出连续最长的数字串:读入一个字符串str,输出字符串str中的连续最长的数字串;合法括号的判断:给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)