レーベンシュタイン編集距離を実際に計算する必要はないことに注意してください。1かどうかを確認してください。
メソッドのシグネチャは次のようになります。
bool Is1EditDistance(string s1, string s2).
例:1。「abc」と「ab」はtrueを返します2.「abc」と「aebc」はtrueを返します3.「abc」と「a」はfalseを返します
再帰的な承認を試みましたが、効率的ではありません。
更新:友人から回答を得ました:
for (int i = 0; i < s1.Length && i < s2.Length; i++)
{
if (s1[i] != s2[i])
{
return s1.Substring(i + 1) == s2.Substring(i + 1) //case of change
|| s1.Substring(i + 1) == s2.Substring(i) //case of s1 has extra
|| s1.Substring(i) == s2.Substring(i + 1); //case of s2 has extra
}
}
return Math.Abs(s1.Length - s2.Length) == 1;