0

文字列に類似した文字が 1 つ以上含まれているかどうかを確認する方法が必要です。文字「D」を含むすべての文字列を検索したくありません。たとえば、"Christopher" という文字列があり、"Chris" が "Christopher" に含まれているかどうかを確認したい場合は、それを返します。ただし、「Candy」が文字列「Christopher」に含まれているかどうかを確認したい場合、「C」が共通しているという理由だけでそれを返したくありません。

私は .Contains() メソッドを試しましたが、2 つ以上の類似した文字にそのルールを与えることはできず、正規表現を使用することを考えましたが、それは少しやり過ぎかもしれません。同様の文字は隣り合っている必要があります。

ありがとうございました :)

4

2 に答える 2

2

これは、の各2文字グラムをs1検索し、で検索しs2ます。

string s1 = "Chrx";
string s2 = "Christopher";
IsMatchOn2Characters(s1, s2);

static bool IsMatchOn2Characters(string a, string b)
{
    string s1 = a.ToLowerInvariant();
    string s2 = b.ToLowerInvariant();

    for (int i = 0; i < s1.Length - 1; i++)
    {
       if (s2.IndexOf(s1.Substring(i,2)) >= 0)
          return true; // match
    }

    return false; // no match
}
于 2012-05-31T19:51:32.083 に答える
1

これは、最長共通部分文字列問題によく似ています。これは、DP in O(m*n) を使用して簡単に解決できます。

パフォーマンスを気にせず、これを実際に実装したくない場合は、s1 のすべての部分文字列を s2 に検索する力ずくのソリューションを使用することもできます。

于 2012-05-31T20:03:15.907 に答える