题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
StringBuilder sb = new StringBuilder();
while ((str = br.readLine()) != null) {
char[] chars = str.toCharArray();
int[] dp = new
int[chars.length]; //dp[i]:以i为尾的最长子串长度,dp[i] = Character.isDigit(chars[i]) ? dp[i - 1] + 1 : 0;
dp[0] = Character.isDigit(chars[0]) ? 1 : 0;
//计算最大值
int max=dp[0];
for (int i = 1; i < chars.length; i++) {
dp[i] = Character.isDigit(chars[i]) ? dp[i - 1] + 1 : 0;
max=Math.max(max,dp[i]);
}
//拼接所有最大值的字符串
for (int i = 0; i < dp.length; i++) {
if(dp[i]==max){
sb.append(str.substring(i - max + 1, i + 1));
}
}
sb.append(",");
sb.append(max);
sb.append("\n");
}
System.out.print(sb.toString());
}
}
