[Leetcode]459. 重複するサブストリング

4004 ワード

459.重複するサブストリング
空でない文字列を指定し、そのサブストリングから複数回繰り返して構成できるかどうかを判断します.指定された文字列には、小文字の英字のみが含まれ、長さは10000を超えません.
例1:
入力:abab
出力:True
解釈:サブ文字列「ab」から2回繰り返して構成できます.
例2:
入力:aba
出力:False
例3:
入力:abcabcabcabc
出力:True
解釈:サブ文字列「abc」から4回繰り返して構成できます.(またはサブ文字列「abcabc」を2回繰り返して構成します.)
私がこの問題を解決する構想は、文字列をi部に分けて、このi部の最初の部分を得ることです.この第1部を連続的にi回加算し、元の文字列と比較し、等しい場合は、元の文字列がi部の同じ文字列から構成されていることを示し、Trueを返し、そうでない場合はfalseを返す.
class Solution {
public:
    bool repeatedSubstringPattern(string s) {
        int length = s.length();
        for (int i = 2; i < 100; i++) {
            string str = ""; 
            for (int j = 0; j < length / i; j++) {
                str += s[j];
            }
            string res = "";
            for (int k = 0; k < i; k++) {
                res += str;
            }
            if (res == s) return true;
        }
        return false;     
    }
};