前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【leetcode刷题】T77- 重复的子字符串

【leetcode刷题】T77- 重复的子字符串

作者头像
木又AI帮
修改2019-07-18 10:20:09
5110
修改2019-07-18 10:20:09
举报
文章被收录于专栏:木又AI帮木又AI帮

【题目】

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。

示例 1:

代码语言:javascript
复制
输入: "abab"

输出: True

解释: 可由子字符串 "ab" 重复两次构成。

示例 2:

代码语言:javascript
复制
输入: "aba"

输出: False

示例 3:

代码语言:javascript
复制
输入: "abcabcabcabc"

输出: True

解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)

【思路】

对于子字符串,判断其长度是否小于原字符串的长度,并且能被后者整除,两者都满足(不满足条件,肯定不会是符合要求的子串,不用进行下一步操作),继续判断子字符串是否能重复几次构成原字符串。

【代码】

python版本

代码语言:javascript
复制
class Solution(object):
    def repeatedSubstringPattern(self, s):
        """
        :type s: str
        :rtype: bool
        """
        length = len(s)
        # 特殊情况
        if length == :
            return False
        for i in range(length /  + ):
            # 能被整除,前后相同
            if length % (i+) ==  and s[:i+] == s[-(i+):]:
                # 完全相同
                num = length / (i+)
                if num >  and s[:(i+)] * num == s:
                    return True
        return False

C++版本

代码语言:javascript
复制
class Solution {
public:
    bool repeatedSubstringPattern(string s) {
        // 特殊情况
        if(s.size() == )
            return false;
        string str = "";
        for(int i=; i <= s.size()/; i++){
            str = s.substr(, i+);
            if(s.size() % (i+) ==  && s.size() > (i+)){
                int j=i+;
                for(; j<s.size(); j++){
                    if(s[j] != s[j % (i+)])
                        break;
                }
                // cout << i << " " << s[i] << " " << s[j] << endl;
                // 正常退出,满足条件
                if(j == s.size())
                    return true;
            }
        }
        return false;
    }
};
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档