- package cn.itcast.string.demo;
- /*
- * 题目:两个字符串的最大相同子串
- * "ahhfhosnfdkhcihfa"
- * "fdafakjdhosnfgnao"
- * 思路:先按照一定顺序求一个字符串的子串,然后判断另一个字符串是否包含子串,只要第一次包含,就是最大的子串。
- *
- */
- public class StringTest2 {
- public static void main(String[] args) {
- String s1 = "ahhfhosnfdkhcihfa";
- String s2 = "fdafakjdhosnfgn";
- String s = getMaxSubstr(s1, s2);
- System.out.print("s=" + s);
- }
- public static String getMaxSubstr(String s1, String s2) {
- // 判断字符串的长度
- String temp = null;
- if (s2.length() >= s1.length())
- temp = s1;
- s1 = s2;
- s2 = temp;
- // 由长到短的顺序获取短字符串的所有子串
- for (int i = 0; i < s2.length(); i++) {
- for (int y = 0, z = s2.length() - i; z != s2.length() + 1; y++, z++) {
- String sub = s2.substring(y, z);
- // 判断长字符串是否包换子串
- if (s1.contains(sub))
- return sub;
- }
- }
- return null;
- }
- }
复制代码 老毕的视频中也有一个方法,先按照一定顺序求较短字符串的所有子串,然后判断另一个字符串是否包含子串,第一次包含,就是最大的子串。
|