Repeated Substring Pattern(C++重複的子字符串)

參考網址: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;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章