從兩個字符串(str_1,str_2)中找出最大公共子字符串(comString)的方法為:
- 選取長度較短的字符串(假設str_1較短)做截取;
- 從字符串中截取長度為1的子字符串;
- 每個子字符串都在str_2中做查詢,查詢到則將該字符串賦予comString;
- 從字符串中截取長度為2的子字符串,重復3;
- 從字符串中截取長度為n的子字符串,重復3;
- 結束。
截取字符串例子:
實例:
[Java]
/** * create by lijiaman on 2016-09-24 * 題目:求兩個字符串的最大公共子字符串 * 思路:將短的字符串從短到長做字符串截取,截取結果與另一個字符串做查詢,如果查詢到,默認為公共字符串。 */ package com.company; public class Main { public static void main(String[] args) { String str_1="abcdefghijk"; String str_2="abcdfghabcdef"; commonString(str_1,str_2); } public static void commonString(String str_1,String str_2) { String comString=""; //用於存放公共字符串 String childString=""; //存放拆分得到的子字符串 String minString=str_1.length()<str_2.length()?str_1:str_2; //選取短的字符串做拆分 //System.out.println(minString); for(int i=1;i<=minString.length();i++) for(int j=0;j<minString.length();j++) { if(j+i<=minString.length()) { childString = minString.substring(j, j + i); if (str_2.indexOf(childString) != -1) //如果不等於-1,則表示在str_2里面找到childString comString = childString; } } System.out.println(comString); } }
結果為: