參考網址:https://leetcode.com/problems/repeated-substring-pattern/discuss/94360/My-one-line-c%2B%2B-solution
(1)如果存在一個子字符串,其重複多次組成原始字符串,可以表示如下的形式
origin_str = pattern + pattern + ... + pattern = m * pattern;
(2)兩個原始字符串連接
origin_str + origin_str = 2 * m * pattern;
(3)移除首尾兩個字符
new_str = pattern_wo_head + (2m-2) * pattern + pattern_wo_rear
(4)所以原始字符串可以被發現的情況是 2m-2>=m,即m>=2
class Solution {
public:
bool repeatedSubstringPattern(string str) {
return (str + str).substr(1, str.size() * 2 - 2).find(str)!=-1;
}
};