一、题目
描述
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:
个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述:
在一行内输出str中里连续最长的数字串。
示例1
输入:
abcd12345ed125ss123456789
输出:
123456789
二、思路解析
OK,我原本是用暴力解法做出来的,但在题解区,我学习到了一种新的解题思路:双指针。
首先定义 i 和 j 两个变量,其中 i 先遍历整个字符串,当 i 下标的元素为数字时,再把 i 复制给 j。
然后通过一个 while 循环,计算出在 j 之后,一共有多少个连续的数字元素,借助 begin 变量统计出长度 len。
最后,依次打印出区间 [begin, begin + len] 的值即可。
具体实现请看下面代码👇
三、完整代码
import java.util.Scanner;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
char[] ch = bf.readLine().toCharArray();
int len = 0;
int begin = -1;
for(int i = 0; i < ch.length; i++){
if(ch[i] >= '0' && ch[i] <= '9'){
int j = i;
while(j < ch.length && ch[j] >= '0' && ch[j] <= '9'){
j++;
}
if(j - i > len){
begin = i;
len = j - i;
}
i = j;
}
}
for(int i = begin; i < begin + len; i++){
System.out.print(ch[i]);
}
}
}
以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!