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

  1. /*
  2. 习题3,获取字符串在另一字符串中相同的最大子串.
  3. */
  4. public class StringTest {

  5.         public static void main(String[] args) {
  6.        
  7.                 String str1 = "abcdefghijklmn";
  8.                 String str2 = "bcdaefghijklnm";
  9.                 String str3 = "1234567890";
  10.                
  11.                 System.out.println(getMaxSubstring1(str2,str1));
  12.                
  13.                
  14.         }
  15.         /*
  16.         自己写的方法
  17.         */
  18.         public static String getMaxSubstring(String maxStr, String minStr) {
  19.        
  20.                 for(int x1=0,y1=minStr.length(); x1<y1; y1--) {
  21.                        
  22.                         for(int x2=x1,y2=y1; y2<=minStr.length(); x2++,y2++) {
  23.                                
  24.                                 System.out.print(minStr.substring(x2,y2)+"  ");
  25.                                 if(contains(maxStr, minStr, x2, y2))
  26.                                         return maxStr.substring(x2,y2);
  27.                         }
  28.                         System.out.println();
  29.                 }
  30.                 return "-1";
  31.                
  32.         }
  33.        
  34.         private static boolean contains(String maxStr,String minStr, int x, int y) {
  35.        
  36.                 return maxStr.contains(minStr.substring(x,y));
  37.         }
  38.        
  39.         /*
  40.         视频毕老师的方法
  41.         */
  42.        
  43.         public static String getMaxSubstring1(String str1, String str2) {
  44.        
  45.                 String maxStr = "";
  46.                 String minStr = "";
  47.                
  48.                 maxStr = str1.length()>str2.length()? str1 : str2;
  49.                 minStr = maxStr == str1? str2 : str1;
  50.                 int minStrLength = minStr.length();
  51.                
  52.                 for(int x=0; x<minStrLength; x++) {
  53.                
  54.                         for(int y=0,z=minStrLength-x; z<=minStrLength;y++,z++) {
  55.                        
  56.                                 if(contains(maxStr,minStr,y,z))
  57.                                         return maxStr.contains(minStr.substring(y,z));
  58.                         }
  59.                 }
  60.                 return "";
  61.         }
  62.        
  63. }
复制代码




3 个回复

倒序浏览
不系之舟王 来自手机 中级黑马 2014-9-20 19:33:39
沙发
努力创新啊
回复 使用道具 举报
其实道理上还是一样,表达方式不同,支持创新!!
回复 使用道具 举报
yinzhenyu 发表于 2014-9-20 23:24
其实道理上还是一样,表达方式不同,支持创新!!

这个是看完题自己直接做的,然后看视频.  觉得自己饶了弯子了{:3_64:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马