首页 > 学院 > 开发设计 > 正文

求最长递增子串

2019-11-11 05:47:00
字体:
来源:转载
供稿:网友
最近看到一个java笔试题:求最长递增子串 题目:给定一个只包含小写字母(a-z)的字符串。找出其中最长递增子串(子串是指连续的子串)。 例如:给定ababc输出abc public static void main(String [] args){ String str="abcefghjklmn"; System.out.PRintln("str:"+getMaxSubStr(str)); } static String s=""; //标记最长子串 public static String getMaxSubStr(String str){ String s=""; //标记最长子串 return getStr(str,0,0,1); } /** * * @param str 待查找字符串 * @param start 标记子串初始位置 * @param sf 标记两字符比较的第一个字符 * @param end 标记两字符比较的第二个字符 * @return 返回最长字符串 */ public static String getStr(String str,int start,int sf,int end){ if (str.length()<2){ return str; } String s1=""; //标记当前子串 if (str.charAt(end)-str.charAt(sf)==1){//当前子串递增 sf++; end++; if (end<=str.length()-1){ return getStr(str,start,sf,end); }else { s1=str.substring(start,end); System.out.print("s1:"+s1); System.out.println(" s:"+s); if (s1.length()>s.length()){//当前子串长度大于最大子串长度 s=s1; } return s; } }else { s1=str.substring(start,end); System.out.print("s1:"+s1); System.out.println(" s:"+s); if (s1.length()>s.length()){//当前子串长度大于最大子串长度 s=s1; } if (end==str.length()-1){ return s; }else { return getStr(str,end,end,end+1); } } }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表