本文共 1680 字,大约阅读时间需要 5 分钟。
在编程之前,我们先来分析题目。
找出两个字符串中的最大子串,即最大的交集。例如:udappyzk和xzhappymol最大子串为appy
以题目中较短字符串udappyzk为例
综上分析:
代码实现如下:
package com.algorithm;/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */public class StringAlgorithm { public static void main(String[] args) { String firstString = "udappyzk"; String secondString = "xzhappymol"; String commonMaxSubstring = findCommonMaxSubstring(firstString, secondString); System.out.println("commonMaxSubstring=" + commonMaxSubstring); } // 求两个字符串的最大交集 public static String findCommonMaxSubstring(String firstString, String secondString) { String longerString = null; String shorterString = null; String result = null; if (firstString.length() >= secondString.length()) { longerString = firstString; shorterString = secondString; } else { longerString = secondString; shorterString = firstString; } int shorterStringLength = shorterString.length(); for (int i = 0; i < shorterStringLength; i++) { for (int j = 0; j <= i; j++) { int start = j; int end = shorterStringLength - i + j; result = shorterString.substring(start, end); int index = longerString.indexOf(result); if (index != -1) { return result; }else { result = null; } } } return result; }}