首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang Leetcode 459. Repeated Substring Pattern.go

Golang Leetcode 459. Repeated Substring Pattern.go

作者头像
anakinsun
发布2019-04-12 14:19:46
发布2019-04-12 14:19:46
49400
代码可运行
举报
文章被收录于专栏:学习日记学习日记
运行总次数:0
代码可运行

版权声明:原创勿转 https://cloud.tencent.com/developer/article/1412983

思路

有一个神奇的解法:

  1. 用两个s 首尾相连得到一个新的字符串ss ;
  2. 去掉ss 的首尾两个字符;
  3. 如果在剩下来的字符串中能找到s 那么返回True,否则False if len(s) == 0 { return false } ss := (s + s)1:(len(s)*2)-1 return strings.Contains(ss, s) 这里用的解法: 重复子串长度最长为len/2,直接每次选择一个可以被整除的较小的数,截取开头的那几个字符,然后重复到原长度验证就好。

code

代码语言:javascript
代码运行次数:0
运行
复制
func repeatedSubstringPattern(s string) bool {
	str := []byte(s)
	if len(str) <= 1 {
		return false
	}
	max := len(str) / 2
	for i := 1; i <= max; i++ {
		j := i
		idx := 0
		if len(str)%i > 0 {
			continue
		}
		for ; j < len(str); j++ {
			if str[j] != str[idx] {
				break
			}
			idx++
			if idx >= i {
				idx = 0
			}
		}

		if j == len(str) {
			return true
		}
	}
	return false
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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