首页 > 代码库 > 寻找最长递增数字子串_Java实现
寻找最长递增数字子串_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; } }
本文出自 “梦朝思夕” 博客,转载请与作者联系!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。