刷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;
    }

 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务