题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) {
String s = in.nextLine();
int maxDigitLen = 0;
int curLen = 0;
for (int i = 0 ; i < s.length() ; ++i) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
++curLen;
} else {
maxDigitLen = Math.max(curLen, maxDigitLen);
curLen = 0;
}
}
maxDigitLen = Math.max(maxDigitLen, curLen);//结尾部分
StringBuilder sb = new StringBuilder();
int begin = 0;
boolean flag = false;
curLen = 0;
for (int i = 0 ; i < s.length() ; ++i) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
if (!flag) {
begin = i;
flag = true;
}
curLen++;
} else {
flag = false;
if (curLen == maxDigitLen) {
sb.append(s.substring(begin, begin + maxDigitLen));
}
curLen = 0;
}
}
if (curLen == maxDigitLen) { //结尾部分
sb.append(s.substring(begin, begin + maxDigitLen));
}
System.out.println(sb.toString() + "," + maxDigitLen);
}
}
}
查看22道真题和解析
