寻找最长递增数字子串_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;
 }
}	


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