私は C++ の初心者で、2 つの文字列を作成しようとしています。
なにか提案を?
最初の 1 つの単語が 2 番目の終わりに「重なる」文字数を計算するには、次のようにします。
public static int combinedLength(String s1, String s2) {
s1 = s1.toLowerCase();
s2 = s2.toLowerCase();
for (int i = 1; i < s1.length() && i < s2.length(); i++)
if (s1.endsWith(s2.substring(0, i+1)) || s2.endsWith(s1.substring(0, i+1)))
return s1.length() + s2.length() - i;
return s1.length() + s2.length();
}
これは、s1 が s2 の終わりで始まるか、またはその逆であるかどうかを調べる場合、開始/終了でより長い文字シーケンスを徐々にテストすることによって機能します。このような一致は 1 つしかないため、最初に見つかった一致は、両方の長さの合計から反復回数を引いた結果を返します。一致しない場合、両方の長さの合計が返されます。
テスト:
combinedLength("super", "perfect") ==> 9
combinedLength("perfect", "super") ==> 9
combinedLength("pencil", "eraser") ==> 12