同じ長さの 2 つの文字列があります。そして、Y と Z が空でない XYZ と XZY として表現できるかどうかを確認する必要があります。
私の解決策は、両方の文字列の同じ最初の文字を「食べ」、残りの最長共通部分文字列を見つけることです。次に、最初の文字列の残りと 2 番目の文字列の残り (LCS なし) が等しいかどうかを確認します。問題は、このための O(N) メモリ複雑性アルゴリズムについて聞いたことですが、私が見つけたのは O(MN) だけです。私は記憶力が限られているので、それは私にとって重要です。
2 番目の解決策は、"(.*)(.+)(.+)\1\3\2" 正規表現を使用することですが、これは非常に貧弱な解決策です。
他のアイデアはありますか?