刷leetcode-day17
一、题目:
459.重复的子字符串:
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
示例 1:
输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。
示例 2:
输入: "aba" 输出: False
二、思路:
首先找出s.size()的所有约数(字符串重复的次数只能是它的约数)并放入一个整数vector。遍历vector,看是否存在元素满足重复字符串的条件,即每个重复的子串都相同。
三、代码(C++):
bool repeatedSubstringPattern(string s) {
if(s.size()==1)
return false;
vector<int> a;
for(int i=2;i!=s.size()+1;i++)
{
if(s.size()%i==0)
a.push_back(i);
}
int num=0;
for(auto a1:a)
{
for(int i=0;i!=s.size()/a1;i++)
{
for(int k=0;k!=a1;k++)
{
if(s[i]==s[i+s.size()/a1*k])
++num;
}
}
if(num==s.size())
return true;
num=0;
}
return false;
}
查看17道真题和解析