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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 熊猫86 中级黑马   /  2013-12-17 23:14  /  925 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师的视频中“获取两个相同字符串中最大相同子串”的代码似乎存在漏洞,比如,如下的两个字符串s1和s2,其中最大相同子串应该有两个,即“gh”和“mn”,而输出的结果只有第一个找到的“gh”,因此,代码需要进一步优化,我的问题是,在最大相同子串的数量不唯一时,如何才能将所有情况打印出来?

  1. public class StringTest3 {

  2.         public static void main(String[] args) {

  3.                 String s1= "abcdefghimn";
  4.                 String s2= "aghjmn";
  5.                 System.out.println(getMaxSubString(s1, s2));
  6.                

  7.         }
  8.        
  9.         public static String getMaxSubString(String s1,String s2) {
  10.                
  11.                 String max = "",min = "";
  12.                 max = s1.length()>s2.length()?s1:s2;
  13.                 min = (max==s1)?s2:s1;
  14.                
  15.                 for(int x=0; x<min.length(); x++) {
  16.                         for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) {
  17.                                 String temp = min.substring(y,z);
  18.                                 if(max.contains(temp))  //if(s1.indexOf(temp)!=-1)
  19.                                         return temp;
  20.                         }
  21.                 }
  22.                 return null;
  23.         }

  24. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马