從兩個字符串中找出最大公共子字符串


從兩個字符串(str_1,str_2)中找出最大公共子字符串(comString)的方法為:

  1. 選取長度較短的字符串(假設str_1較短)做截取;
  2. 從字符串中截取長度為1的子字符串;
  3. 每個子字符串都在str_2中做查詢,查詢到則將該字符串賦予comString;
  4. 從字符串中截取長度為2的子字符串,重復3;
  5. 從字符串中截取長度為n的子字符串,重復3;
  6. 結束。

截取字符串例子:

字符串截取

實例:

[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);
    }
}

結果為:

comString


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM