2013-09-29 44 views
0

我試圖自己創建某種基於字符串的比較算法。 我正在做的是:我遍歷文本文檔中的每個段落,並將它們進行比較。獲取字符串比較的開始和結束

現在我正在努力的是兩個字符串的比較開始和結束。

考慮具有兩個串:

This is a test-text.

This is a very long test-text.

這意味着有的在第二行('very long ')10個字符(9文本,1個空白)的變化。

這些字符應相應突出顯示。我已經想出發現的字符串分歧開始的解決方案(比如:指數n是其中的區別開始):

int diffIndexStart = localText.Zip(serverText, (c1, c2) => c1 == c2).TakeWhile(b => b).Count();

現在我怎麼能當字符串匹配再次檢測,所以我可以停止在那裏突出顯示,而不是突出顯示該行的其餘部分(從diffIndexStart開始)。

還有另外一個問題:當有一個行內的多個變化是什麼,讓我們說:

This is a test-text.

This, apparently, is a very long test-text.

現在我有兩個變化:, apparently,very long

回答

0

您正在看常見的Longest Common Subsequence (LCS) problem。有大量的論文(維基百科頁面提供了一些鏈接作爲開始),幾種常見的方法已在Wiki中突出顯示。

+3

這是一個答案或評論?我認爲它與[Levenshtein距離]更相關(http://en.wikipedia.org/wiki/Levenshtein_distance) –

+1

你是否聲稱我的答案沒有給出工作方向?或者你是否期望看到一個便宜的自由職業者風格的「這段代碼片」起作用? – DarkWanderer

+0

'我認爲這更與Levenshtein距離有關'是和不 - OP在這裏只說插入,至少在例子中。 – DarkWanderer

相關問題