459. Repeated Substring Pattern
Input: "abab"
Output: True
Explanation: It's the substring "ab" twice.Input: "aba"
Output: FalseInput: "abcabcabcabc"
Output: True
Explanation: It's the substring "abc" four times. (And the substring "abcabc" twice.)bool repeatedSubstringPattern(string s) { // time: O(n^2); space: O(n)
if (s.empty()) return false;
int n = s.size();
string str = s.substr(1, n - 1) + s.substr(0, n - 1);
return str.find(s) != string::npos;
}bool repeatedSubstringPattern(string s) { // time: O(n^2); space: O(n)
if (s.empty()) return false;
int n = s.size();
for (int len = 1; len <= n / 2; ++len) {
if (n % len) continue;
string pattern = s.substr(0, len);
int i = len; // starting idx of 2nd pattern
while (i + len <= n) {
string substr = s.substr(i, len);
if (substr != pattern) break;
i += len;
}
if (i == n) return true;
}
return false;
}Last updated