1 獲取兩個字串中最大相同子串

2021-10-01 16:51:57 字數 1504 閱讀 6922

比如有兩個字串

str1 = 「eysdfghjkl」;

str2 = 「cxbghjp」;

需要找出這裡兩個字串中最大的字元子串,這裡就是**「ghj」**.

查詢的方法就是把兩個字串中較短的那個依次減小,然後按照該長度在短的字串中獲取所有子串依次判斷該子串是否存在於長的字串中.

上面的方法聽著是不是很繞.我們詳細說明一下吧.

上面的那兩個字串短的是str2,長度為7,即str2.leng() == 7.這個沒有異議吧.

然後依次減小,先從7開始,str2長度為7的子串只有乙個吧,就是str2本身.那判斷str2是否是str1的子串.很明顯不是.那我們就把上面黑體字部分的定義為第一輪那我們開始第二輪,str2的長度依次減小,上一輪的長度為7,那這一輪就是6,那我們就找長度為6的str2的子串,只有兩個:

(1) 「cxbghj」

(2) 「xbghjp」

然後判斷上面這兩個字串的是否是str1的子串,也不是.

繼續開始第三輪,第三輪的長度為5,str2長度的子串有3個:

(1) 「cxbgh」

(2) 「xbghj」

(3) 「bghjp」

判斷這三個字串是否是str1的子串.不是.

第四輪,長度為4,四個str2的子串

(1) 「cxbg」

(2) 「xbgh」

(3) 「bghj」

(4) 「ghjp」

也沒有是str1的子串.

第5輪長度為3,5個str的子串.

(1) 「cxb」

(2) 「xbg」

(3) 「bgh」

(4) 「ghj」

(5) 「hjp」

在這一輪對比到(4)的時候判斷(4)是str1的子串.就馬上退出,就找到了這兩個字串的子串

實現**如下:

public static void main(string args) 

public static string findmaxsubstring(string s1,string s2)

} return null;//如果沒有找到return null

}

輸出如下:

0 7 cxbghjp

0 6 cxbghj

1 7 xbghjp

0 5 cxbgh

1 6 xbghj

2 7 bghjp

0 4 cxbg

1 5 xbgh

2 6 bghj

3 7 ghjp

0 3 cxb

1 4 xbg

2 5 bgh

3 6 ghj

最大子串為:ghj

這樣就能找到最大子串.

獲取兩個字串中最大相同子串

獲取兩個字串中最大相同子串。比如 str1 abcwerthelloyuiodef str2 cvhellobnm return hello 如果只存在乙個最大長度的相同子串 public string getmaxsamesubstring string str1,string str2 retu...

獲取兩個字串中最大相同子串

獲取兩個字串中最大相同子串。比如 str1 abcwerthelloyuiodefabcdef str2 cvhellobnm public string getmaxsamestring string str1,string str2 return null 如果存在多個長度相同的最大相同子串 此...

兩個字串中最大相同的子串

3,兩個字串中最大相同的子串。qwerabcdtyuiop xcabcdvbn 思路 1,既然取得是最大子串,先看短的那個字串是否在長的那個字串中。如果存在,短的那個字串就是最大子串。2,如果不是呢,那麼就將短的那個子串進行長度遞減的方式去子串,去長串中判斷是否存在。如果存在就已找到,就不用在找了。...