A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*需求:获取两个字符串的最大子字符串
  2. *思路:1、比较两个字符串,选出较短的字符串
  3. *     2、若长字符串包含短字符串,则返回;否则将短字符串截取长度-1的子串
  4. *     3、反复判断长字符串是否包含子串,包含则找到,否则继续截取
  5. */
  6. public class MaxSameString {
  7.         public static void main(String[] args) {
  8.                 String s1 = "abcdefg anothersame same";
  9.                 String s2 = "ab anothersame d same";
  10.                 System.out.println(s1);
  11.                 System.out.println(s2);
  12.                 System.out.println("maxSameString = " + maxSameString(s1, s2));
  13.         }
  14.        
  15.         static String maxSameString(String string, String otherString){
  16.                 String longStr, shortStr;
  17.                
  18.                 //选出长字符串和短字符串
  19.                 longStr = string.length() > otherString.length() ? string : otherString;
  20.                 shortStr = longStr == string ? otherString : string;
  21.                
  22.                 //记录子串结尾后一位索引
  23.                 int end = shortStr.length();
  24.                 //记录临时最大子串
  25.                 String maxString = "";
  26.                 //记录临时最大子串的长度
  27.                 int length = 0;
  28.                
  29.                 while(end > 0){
  30.                         //end - i > length的作用:end - i表示截取的temp字符串长度
  31.                         //如果temp长度不大于临时最大子串的长度,那不必比较longStr.contains(temp)
  32.                         for (int i = 0; i < end && end - i > length; i++) {
  33.                                 String temp = shortStr.substring(i, end);
  34.                                 if(longStr.contains(temp)){
  35.                                         //更新最长子串记录
  36.                                         maxString = temp;
  37.                                         length = temp.length();
  38.                                 }                                       
  39.                         }
  40.                        
  41.                         //将子串最后一位截掉
  42.                         --end;
  43.                         shortStr = shortStr.substring(0, end);
  44.                 }
  45.                 return maxString;
  46.         }
  47. }
复制代码


1 个回复

正序浏览
看下代码,膜拜大神!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马