有一个字符串,其中包含了多个数字子串,要求求出最长的递增数字子串,比如s='df1112wg222235hhh25678902344a666666666666666666666666666666666666sd'中最长递增数字子串是666666666666666666666666666666666666。
package com.mzsx.binarySearch;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
public class Continumax {
public static void main(String[] args) {
String str ="df1112wg222235hhh25678902344a666666666666666666666666666666666666sd";
System.out.println(continumax1(str));
}
public static String continumax(String str){
//定义最长子字符串的长度
int max=0;
//最终的返回数字字符串
String re="";
//存储数字字符
List<Character> list=new ArrayList<Character>();
//字符串总长
int length=str.length();
//符合数字的正则式
String regEx ="^[0-9]$";
Pattern pat = Pattern.compile(regEx);
for (int i = 0; i < length; i++) {
//获得指定的字符是否为数字
boolean rs = pat.matcher(""+str.charAt(i)).find();
if(rs){
//如果是数字则进入list
list.add(str.charAt(i));
}else{
//字母字符
int tem=list.size();
//暂时的字符串
String strTemp="";
//循环获得数字字符串
for (int j = 0; j < list.size(); j++) {
strTemp+=list.get(j);
}
//清空list为下一次做好准备
list.clear();
//判断是否为最长递增数字子串
if (tem>max) {
max=tem;
re=strTemp;
}
}
}
System.out.println(max);
return re;
}
public static String continumax1(String str){
//定义最长子字符串的长度
int max=0;
//最终的返回数字字符串
String re="";
//存储数字字符
String strTemp="";
//字符串总长
int length=str.length();
//符合数字的正则式
String regEx ="^[0-9]$";
Pattern pat = Pattern.compile(regEx);
for (int i = 0; i < length; i++) {
//获得指定的字符是否为数字
boolean rs = pat.matcher(""+str.charAt(i)).find();
if(rs){
//如果是数字则进入strTemp
strTemp+=str.charAt(i);
}else{
//字母字符
int tem=strTemp.length();
//判断是否为最长递增数字子串
if (tem>max) {
max=tem;
re=strTemp;
}
//清空strTemp为下一次做好准备
strTemp="";
}
}
System.out.println(max);
return re;
}
}
转载于:https://blog.51cto.com/qiangmzsx/1416481