賓利棋牌在哪個(gè)網(wǎng)站做的廣告成都seo服務(wù)
題目(leecode T459):
給定一個(gè)非空的字符串?s
?,檢查是否可以通過由它的一個(gè)子串重復(fù)多次構(gòu)成。給定的字符串只含有小寫英文字母,并且長度不超過10000。fang
移動(dòng)匹配。分析可以由自己的子串構(gòu)成的字符串,肯定是由若干個(gè)相同的字符串構(gòu)成的并且結(jié)構(gòu)就是若干相同字符串的連接,那么我們?nèi)绻麑蓚€(gè)相同的字符串s連接構(gòu)成一個(gè)字符串t,并且去掉t的頭和尾的話。剩下的字符串里面肯定也還有一個(gè)字符串s,因?yàn)閟是由若干個(gè)相同字符串構(gòu)成的,把兩個(gè)s構(gòu)成一個(gè)t后,即使去掉了開頭和結(jié)尾,里面若干個(gè)字串也可以構(gòu)成一個(gè)完整的s。
class Solution {
public:bool repeatedSubstringPattern(string s) {string t = s + s; //連接s串構(gòu)成tt.erase(t.begin()); //刪除掉開頭的字符t.erase(t.end() - 1); //刪除掉結(jié)尾的字符if (t.find(s) != std::string::npos) return true; //如果剩下的字符串中能找到sreturn false;}
};