【Java】求两个字符串的最大子串

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42568655/article/details/97176699

求解两个字符串的最大字串

	/**
	 * Return the max substring for two strings
	 *
	 * @param str1
	 * @param str2
	 * 
	 */
	public static String maxSubString(String str1, String str2) {
		String str = new String();
		// Make the long string str1, the other str2
		if (str1.length() < str2.length()) {
			String temp = str1;
			str1 = str2;
			str2 = temp;
		}
		// if the long string contains short string, return short string
		if (str1.contains(str2))
			return str2;
		
		// From the longest specified length string, match it, from left to right.
		for (int i = str2.length() - 1; i >= 0; i--) {
			for(int j = 0;  (j + i) <str2.length() ; j ++) {
				// if match successfully, return it
				str = str2.substring(j, j+i);
				if(str1.contains(str))
					return str;
			}
		}
		return str;
	}
}

思路

  1. 现根据两个字符串的长度交换两个字符串,用短的进行判断。
  2. 如果较长的字符串包含较短的字符串,则返回短的字符串
  3. 将短字符串的长度开始,进行一段一段的匹配,从长度长的开始,可以找到最长的子字符串。

猜你喜欢

转载自blog.csdn.net/weixin_42568655/article/details/97176699