0

私は C++ の初心者で、2 つの文字列を作成しようとしています。

なにか提案を?

4

2 に答える 2

0

最初の 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
于 2013-10-19T04:17:57.273 に答える