IOSアルゴリズム(基礎編)---重複するサブストリング

1039 ワード

久しぶりにアルゴリズムを更新しました.今日更新します.
何が知りたいですか.あなたが誠意を持って質問した以上、私は慈悲深くあなたに教えます!
タイトル:空でない文字列を指定し、そのサブ列から複数回繰り返して構成できるかどうかを判断します.
たとえば、s=ababはtrue s=abcabcはfalse s=bbbはtrue s=aaはtrue s=abaはfalseを返します
次は巧みな方法で解決します
2つのsはつなぎ合わせて、首尾を取り除いて、もし切り取った文字列がまだsを含むならば、sが重複する文字列であることを説明して、もちろんsの長さが1より小さいならば、直接false
どうしてですか.sが重複文字列であれば、必ず1つのサブストリングがあり、sの中で循環して現れ、少なくとも2回(1回なら必ず重複文字列ではない)ならば、私たちは2つのsをつなぎ合わせると、サブストリングは少なくとも4回現れ、例えば、s=abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababでは、切り取った文字列にsが含まれているかどうかを判断します.例えば、上のabababは最初のbababaにsを含み、sは繰り返し文字列です.例えば、s abcはabcabcをつなぎ合わせて最初のbcabにsを含まないと、sは繰り返し文字列ではありません.
    func repeatedSubstringPattern(_ s: String) -> Bool {
        if s.count <= 1 { return false }
        var result = s + s;
        result = String(result[result.index(result.startIndex, offsetBy: 1)..

题目来源:力扣(LeetCode)ありがとうございます