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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 michael_wlq 于 2015-9-14 19:42 编辑

获取两个字符串中最大相同子串:
例如字符串"abcwerthelloyuiodef"和 "cvhellobnm"  
思路:  1.将短的那个子串按照长度递减的方式获取到;      
            2. 将每获取到的子串去长串中判断是否包含,如果包含,则找到最长子串。
实现示例
  1. public class StringTest4 {
  2.         public static String getMaxSubString(String s1, String s2) {
  3.                 String max = "", min = "";
  4.                 max = (s1.length() > s2.length()) ? s1 : s2;
  5.                 min = (max == s1) ? s2 : s1;

  6.                 for (int x = 0; x < min.length(); x++) {
  7.                         for (int y = 0, z = min.length() - x; z != min.length() + 1; y++, z++) {
  8.                                 String temp = min.substring(y, z);
  9.                                 //sop(temp);
  10.                                 if (max.contains(temp))// 等价于if(s1.indexOf(temp)!=-1)
  11.                                         return temp;
  12.                         }
  13.                 }
  14.                 return "";
  15.         }

  16.         public static void main(String[] args) {
  17.                 String s1 = "cvhellobnm";
  18.                 String s2 = "abcwerthelloyuiodef";
  19.                 sop(getMaxSubString(s2, s1));
  20.         }

  21.         public static void sop(String str) {
  22.                 System.out.println(str);
  23.         }
  24. }
复制代码

1 个回复

倒序浏览
感谢分享哇
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马