在字符串中找出连续最长的数字串
题目描述
在字符串中找出连续最长的数字串,并把这个串的长度返回;如果长度相同,返回最后一个连续字符串
样例输入
abcd12345ed125ss123456789
abcd12345ss54321
样例输出
输出123456789,函数返回值9
输出54321,函数返回值5
函数原型:
int Continumax(String intputStr, StringBuffer outputStr)
输入参数:
String intputStr 输入字符串
输出参数:
StringBuffer outputStr 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串
返回值:
int 连续最长的数字串的长度
------解决方案--------------------
我改进了一下你在试试public static int Continumax(String intputStr, StringBuffer outputStr) {
char[] charArray = intputStr.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i
if (Character.isDigit(charArray[i])) {
sb.append(charArray[i]);
} else {
sb.append(",");
}
}
String[] digitArray = sb.toString().replaceAll("(,)+", ",").split(",");//得到数字数组
if (digitArray.length <= 1) {
System.out.println("没有数字串!");
return 0;
}
List digitList = new ArrayList(Arrays.asList(digitArray));//转化为list方便操作
List positiveDigitList = fetchContinueDigitByPositiveSort(digitList, true);//得到正向连续的数字比如1234,345
List backDigitList = fetchContinueDigitByPositiveSort(digitList, false);//得到反向连续的数字比如4321,765
List lastList = new ArrayList();
lastList.addAll(positiveDigitList);
lastList.addAll(backDigitList);
int maxLength = 0;
String maxValue = "";
List endStrList = new ArrayList();
for (String s : lastList) { //找出最长并且是最后一个的值和长度
if (s.length() > maxLength) {
maxLength = s.length();
}
}
for (String s : lastList) { //找出最长并且是最后一个的值和长度
if (s.length() == maxLength) {
endStrList.add(s);
}
}
int startIndex = 0;
for (String s : endStrList) {
if (intputStr.lastIndexOf(s) >= startIndex) {
startIndex = intputStr.lastIndexOf(s);
maxValue = s;
maxLength = s.length();
}
}
System.out.println("最大连续数字串为:" + maxValue);
System.out.println("其长度为:" + maxLength);
return maxLength;
}
private static List fetchContinueDigitByPositiveSort(List digitList, boolean isPositive) {
List lastDigitList = new ArrayList();