c++练习五:重复的子字符串
今天的题目是:
给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。
实现
由题目可知 字符串s 是由 它的子串重复多次构成,设子串为x,则 s = nx( n 为 x 重复的次数),对这个公式稍加变形可得 s + s = 2nx, 此时如果移除 2s 的头尾处的字符后 ,若 s 是它的子串则证明 s 是由重复说的子字符串组成的 。
实现代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
class Solution
{
public:
bool repeatedSubstringPattern(string s)
{
return (s + s).find(s, 1) != s.size();
}
};
int main()
{
Solution solve;
string s = "ababba";
bool res = solve.repeatedSubstringPattern(s);
cout << res << endl;
return 0;
}