62,616
社区成员
发帖
与我相关
我的任务
分享
private static String longestNumbers(String s) {
// TODO Auto-generated method stub
int begin = 0;
int end = 0 ;
int length = end - begin;
for(int i = 0;i<s.length();i++){
begin = end =i;
if(s.charAt(i)>='0'&&s.charAt(i)<='9'&&end<s.length()){
end++;
for(int j = i;j<s.length()-1&&end<s.length();j++){
if(s.charAt(j+1)-s.charAt(j)==1)
end++;
else
break;
}
}
int length1 = end - begin ;
if(length<length1)
length = length1;
}
return s.substring(begin, end);
}
[/b]public static int longestNumberStr(String str){
int maxLen = 0;
int curLen = 0;
char[] cArray = str.toCharArray();
for(int i=0; i<cArray.length; i++){
if(cArray[i] >= '0' && cArray[i] <= '9'){
curLen ++;
if(i == cArray.length-1){
maxLen = curLen > maxLen? curLen : maxLen;
curLen = 0;
}
}else{
maxLen = curLen > maxLen? curLen : maxLen;
curLen = 0;
}
}
System.out.println(maxLen);
return maxLen;
}
public static int Continumax(String intputStr, StringBuffer outputStr) {
List<String> digitList = new ArrayList<String>();//转化为list方便操作
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(intputStr);
while (matcher.find()) {
digitList.add(matcher.group(0));
}
if (digitList.isEmpty()) {
System.out.println("没有数字串!");
return 0;
}
for (int i = digitList.size() - 1; i >= 0; i--) {
if (!isContinue(digitList.get(i).toCharArray())) {
digitList.remove(i);
}
}
Collections.sort(digitList, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
int thisLength = String.valueOf(o1).length();
int otherLength = String.valueOf(o2).length();
return thisLength - otherLength;
}
});
System.out.println("最大连续数字串为:" + digitList.get(digitList.size() - 1) + "其长度为:" + digitList.get(digitList.size() - 1).length());
return digitList.get(digitList.size() - 1).length();
}
private static boolean isContinue(char[] array) {
return Math.abs(array[array.length - 1] - array[0]) == array.length - 1;
}
public static void main(String[] arg) {
Continumax("abcd12345ss54321", null);
}
public static int Continumax(String intputStr, StringBuffer outputStr) {
List<String> digitList = new ArrayList<String>();//转化为list方便操作
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(intputStr);
while (matcher.find()) {
digitList.add(matcher.group(0));
}
if (digitList.isEmpty()) {
System.out.println("没有数字串!");
return 0;
}
int maxLength = 0;
String maxValue = "";
for (int i = digitList.size() - 1; i >= 0; i--) {
if (!isContinue(digitList.get(i).toCharArray())) {
digitList.remove(i);
} else if (digitList.get(i).length() >= maxLength) {
maxLength = digitList.get(i).length();
} else {
digitList.remove(i);
}
}
int startIndex = 0;
for (String s : digitList) {
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 boolean isContinue(char[] array) {
return Math.abs(array[array.length - 1] - array[0]) == array.length - 1;
}
public static void main(String[] arg) {
Continumax("abcd12ss34e891", null);
}
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Hello {
public static void main(String[] args) {
String str = "abcd12345ed125ss123456789";
String result = null;
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
String matched = matcher.group(0);
if ((result == null) || (matched.length() >= result.length())) {
result = matched;
}
}
System.out.println(result);
}
}
public static int Continumax(String intputStr, StringBuffer outputStr) {
char[] charArray = intputStr.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < charArray.length; 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<String> digitList = new ArrayList<String>(Arrays.asList(digitArray));//转化为list方便操作
List<String> positiveDigitList = fetchContinueDigitByPositiveSort(digitList, true);//得到正向连续的数字比如1234,345
List<String> backDigitList = fetchContinueDigitByPositiveSort(digitList, false);//得到反向连续的数字比如4321,765
List<String> lastList = new ArrayList<String>();
lastList.addAll(positiveDigitList);
lastList.addAll(backDigitList);
int maxLength = 0;
String maxValue = "";
List<String> endStrList = new ArrayList<String>();
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<String> fetchContinueDigitByPositiveSort(List<String> digitList, boolean isPositive) {
List<String> lastDigitList = new ArrayList<String>();
for (String s : digitList) {
if (s.equals("")) {
continue;
}
char[] charArray = s.toCharArray();
int start = Integer.parseInt(String.valueOf(charArray[0]));
int begin = Integer.parseInt(String.valueOf(charArray[0]));
int startIndex = 0;
if (charArray.length == 1) {
lastDigitList.add(String.valueOf(start));
return lastDigitList;
}
for (int j = 1; j < charArray.length; j++) {
if (isPositive) {
if (begin + 1 == Integer.parseInt(String.valueOf(charArray[j])) && j != charArray.length - 1) {
begin = begin + 1;
continue;
}
} else {
if (begin - 1 == Integer.parseInt(String.valueOf(charArray[j])) && j != charArray.length - 1) {
begin = begin - 1;
continue;
}
}
begin = Integer.parseInt(String.valueOf(charArray[j]));
if (start == begin) {
lastDigitList.add(String.valueOf(start));
} else if (j == charArray.length - 1 && ((isPositive && Integer.parseInt(String.valueOf(charArray[j])) - 1 == Integer.parseInt(String.valueOf(charArray[j - 1])))
|| (Integer.parseInt(String.valueOf(charArray[j])) + 1 == Integer.parseInt(String.valueOf(charArray[j - 1]))))) {
lastDigitList.add(String.valueOf(charArray).substring(startIndex, j + 1));
} else {
lastDigitList.add(String.valueOf(charArray).substring(startIndex, j));
if (j == charArray.length - 1) {
lastDigitList.add(String.valueOf(charArray[j]));
}
}
start = begin;
startIndex = j;
}
}
return lastDigitList;
}
public static void main(String[] arg) {
Continumax("54321test123457 ", null);
}
run:
最大连续数字串为:89
其长度为:2
成功构建 (总时间: 1 秒)