有一個字符串,其中包含了多個數字子串,要求求出最長的遞增數字子串,比如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; } }