获取两个字符串中的最长子串

    科技2022-08-31  108

    将字符串做好长短区别区分,以从长到短的方式进行比较确认操作 @Test public void getLargestSubstringOfTwoStringsTest(){ String str1 = "abchellowordahahau"; String str2 = "abcwordhahau"; String result = getLargestSubstringOfTwoStrings(str1, str2); System.out.println(result); } /** * 获取两个字符串中最长子串 * @param str1 字符串1 * @param str2 字符串2 * Created by zheng on 2020/10/5 */ public String getLargestSubstringOfTwoStrings(String str1, String str2) { String substring = ""; if (empty(str1) || empty(str2)) { return substring; } // 判断好字符串长度,区分长短 String longerStr = str1.length() > str2.length() ? str1 : str2; String shorterStr = longerStr.equals(str1) ? str2 : str1; // 遍历最短字符串 for (int length = shorterStr.length(); length > 0; length--) { /** * 第一次 0-shorter.length * 第二次 0-shorter.length-1,1-shorter.length * 第三次 0-shorter.length-2,1-shorter.length-1,2-shorter.length * ......以此类推,遍历进行包含对比操作,一旦由就是最长字符串 */ // 从最长开始往后进行比较 for (int startIndex = 0; startIndex <= (shorterStr.length() - length); startIndex++) { substring = shorterStr.substring(startIndex, startIndex + length); if (longerStr.contains(substring)) { return substring; } } } return substring; } /** * 非空判断 * @param str 字符串 * Created by zheng on 2020/10/5 */ private boolean empty(String str) { if (str == null || str.trim() == "") { return true; } return false; }
    Processed: 0.008, SQL: 9