昨天在論壇看到有人提出怎麼識別兩個字串最大的相同的部分,很遺憾沒人回帖,在此發布乙個原創的演算法,可以快速的找出兩個字串中所有的最長的相同的部分。
public class bestlike
public listgetstring()
//查詢最大相同長度
while (strformat.indexof(strlargelen,0) != -1)
strlargelen = strlargelen.substring(0, (strlargelen.length - 1));
//提取資料並返回
while (strformat.indexof(strlargelen, intstart)!=-1)
return listresult;}}
在例項化這個類的時候傳入構造方法的引數---要比較的兩個字串,然後呼叫這個類的getstring ()方法即可,返回的是乙個字串型的泛型集合。因為兩個字串同等長度的部分可能有很多,所以用集合存放。
這個演算法可以快速的找出兩個字元相同的、最長的部分,而且是所有的。比如,a=」你好asdb12」,b=」你好csdn12」,那麼返回的集合就包含了」你好」、」sd」、」12」三個字串。如果a=」你好asdb123」,b=」你好csdn123」,返回的集合只包含」123」乙個字串,因為它比」sd」和」你好」長。
演算法的思想是化繁為簡,將兩個字串所有對應的字元一一的進行對比,相同標記為」1」,不同標記為」0」,然後尋找最長的連續的」1」,再根據所找到的」1…1」的位置到原字串中擷取就達到目的了。演算法很好的支援了中文,不僅僅是中文,它支援任何一種程式語言支援的字元。
需要注意的是要比較的兩個字串必須等長。
這個演算法是c#**,學習了新語言,想熟悉一下,就沒用最拿手的vb,估計以後也比較少用vb了。
iOS演算法 找兩個字串中相同字串的最大長度
nsstring str1 qwe不重要我愛你的人的文字ty nsstring str2 哈qwe這也我愛你的人是ty nsarray arr selfmatchlongestsubstrings str1 with str2 nslog 最長的字串 arr nsarray matchlongest...
翻轉字串和比較兩個字串是否相同
奉獻兩個小題,練習繼續 題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 r...
翻轉字串和比較兩個字串是否相同
奉獻兩個小題,練習繼續 題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 r...