尋找最長遞增數字子串_Java實現

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章