一、题目
描述
读入一个字符串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]);}}
}
以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!