LeetCode-459. 重复的子字符串(Goland实现)

216 阅读1分钟

LeetCode题号:459. 重复的子字符串

题目描述:

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

示例 1:

  • 输入: "abab"
  • 输出: True
  • 解释: 可由子字符串 "ab" 重复两次构成。

示例 2:

  • 输入: "aba"
  • 输出: False

解题思路:

        最先想到的就是暴力破解,定义一个子串,子串先取全串的第一个字母开始,接着拿子串去匹配全串,如果子串递增到跟全串一样,则返回false,不满题意,如果子串全部匹配成功,则返回true ,子串依次递增。

func repeatedSubstringPattern(s string) bool {
	//子串
	var str1 string
	//子串长度
	var strLen int
	//全串长度
	var l = len(s)
	for i := 1; i <= l; i++ {
		str1 = s[0:i]
		strLen = len(str1)
		//若子串跟全串一样,直接返回false
		if len(str1) == len(s) {
			return false
		}
		//根据子串去匹配全串是否全部由子串组成
		for j := 0; j <= l-strLen; j+=strLen{
			//按子串str1长度从全串中取得str2
			str2 := s[j : j+strLen]
			//若str2不匹配,直接跳出匹配循环
			if str1 != str2 {
				break
			}
			//表示子串全部匹配成功,则一定会执行返回true
			if j == l-strLen{
				return true
			}
		}
	}
	return false
}

❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ

❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~

❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)