距離の編集
文字列の編集は、いくつかの要素を挿入するか、最初の文字列から何かを削除するか、何かを変更して2番目の文字列に変換することができます。
入力と出力
Input: Two strings to compare. string 1: Programming string 2: Programs Output: Enter the initial string: Programming Enter the final string: Programs The number of changes required to convert Programming to Programs is 4
アルゴリズム
editCount(initStr, finalStr, initLen, finalLen)
入力- 最初と最後の文字列とその長さ。
出力- initStrをfinalStrにするには、編集回数が必要です。
Begin if initLen = 0, then return finalLen if finalLen := 0, then return initLen if initStr[initLen - 1] = finalStr[finalLen - 1], then return editCount(initStr, finalStr, initLen – 1, finalLen - 1) answer := 1 + min of (editCount(initStr, finalStr, initLen , finalLen - 1)), (editCount(initStr, finalStr, initLen – 1, finalLen ), (editCount(initStr, finalStr, initLen – 1, finalLen - 1) return answer End
例
#include<iostream> using namespace std; int min(int x, int y, int z) { //find smallest among three numbers if(x < y) { if(x < z) return x; else return z; }else { if(y < z) return y; else return z; } } int editCount(string initStr , string finalStr, int initLen, intfinalLen) { if (initLen == 0) //when initial string is empty, add all characters of final string return finalLen; if (finalLen == 0) //when final string is empty, delete all characters from initial string return initLen; //when last character matches, recursively check previous characters if (initStr[initLen-1] == finalStr[finalLen-1]) return editCount(initStr, finalStr, initLen-1, finalLen-1); //if last character match is not found, check for insert, delete and update operations recursively return 1 + min ( editCount(initStr, finalStr, initLen, finalLen- 1), // insert editCount(initStr, finalStr, initLen-1, finalLen), // delete editCount(initStr, finalStr, initLen-1, finalLen-1) // update ); } int main() { string initStr; string finalStr; cout << "Enter the initial string: "; cin >> initStr; cout << "Enter the final string: "; cin >> finalStr; cout << "The number of changes required to convert " << initStr << " to " << finalStr; cout << " is " << editCount( initStr , finalStr, initStr.size(), finalStr.size()) << endl; }
出力
Enter the initial string: Programming Enter the final string: Programs The number of changes required to convert Programming to Programs is 4
-
C#で文字列を反転します
文字列を逆にするには、配列を使用します。 Reverse()メソッド。 メソッドを設定し、文字列値を「Henry」として渡しました- public static string ReverseFunc(string str) { char[] ch = str.ToCharArray(); Array.Reverse(ch); return new string(ch); } 上記の方法では、文字列を文字配列に変換しました- char[] ch = str.ToCharArray(); 次に、Reverse()メ
-
Pythonで2つの文字列間の編集距離が1つであるかどうかを確認します
2つの文字列sとtがあるとします。 sとtの間の編集距離が正確に1であるかどうかを確認する必要があります。ここで、2つの文字列間の編集は、これら3つの文字列のいずれかを意味します- 文字を挿入 文字を削除する 文字を置き換える したがって、入力がs =hello t =heilloのような場合、tを取得するにはsに1文字を挿入する必要があるため、出力はTrueになります。 これを解決するには、次の手順に従います- 1、次に falseを返す edit_dist_cnt:=0、i:=0、j:=0 i