0
点赞
收藏
分享

微信扫一扫

459. 重复的子字符串、Leetcode的Go实现

​​459. 重复的子字符串​​

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

1 <= s.length <= 104
s 由小写英文字母组成

遍历:

func repeatedSubstringPattern(s string) bool {
if len(s)==0{
return false
}
for i:=1;i<len(s);i++{
if len(s)%i==0{ //当前位数是总长度的倍数
count:=len(s)/i //计算能重复几次
res:=""
for j:=0;j<count;j++{
res=res+s[0:i]
}
if res==s{
return true
}
}
}
return false
}

高手的题解:将字符串复制一倍,并去首去尾,若2倍后能包含此字符串,则说明可以通过由它的一个子串重复多次构成。

func repeatedSubstringPattern(s string) bool {
if len(s)==0{
return false
}
// 2倍的字符串,将首、尾位切掉,
newS:=(s+s)[1:len(s)*2-1]
// 查看是否能匹配
return strings.Contains(newS,s)
}

459. 重复的子字符串、Leetcode的Go实现_子串


举报

相关推荐

0 条评论