自学内容网 自学内容网

leetcode字符串(二)-重复的子字符串

题目

459.重复的子字符串

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

示例 1:

输入: s = "abab"
输出: true
解释: 可由子串 "ab" 重复两次构成。

示例 2:

输入: s = "aba"
输出: false

示例 3:

输入: s = "abcabcabcabc"
输出: true
解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

思路

如果一个字符串是由他的子字符串构成的,举例:s='abcabc'

把两个s拼在一起会发现如果是由子字符串构成的,那中间那部分必定是s

 当然,我们在判断 s + s 拼接的字符串里是否出现一个s的的时候,要刨除 s + s 的首字符和尾字符,这样避免在s+s中搜索出原来的s,我们要搜索的是中间拼接出来的s。

这里需要借助Python中的find函数,find函数返回的子字符串的首字母在字符串的下标值

代码

class Solution:
    def repeatedSubstringPattern(self, s: str) -> bool:
        n = len(s)
        if n ==1:
            return False
        ss = (s+s)[1:-1]
        if ss.find(s) != -1:
            return True
        else:
            return False


原文地址:https://blog.csdn.net/weixin_40198632/article/details/143501402

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!