📅  最后修改于: 2023-12-03 15:27:26.426000             🧑  作者: Mango
这是一道题目来自须藤放置[1.5]的算法测验,需要解决一个字符串处理的问题。这道题目需要你判断一个字符串是不是由另一个字符串重复N次构成的,其中N是一个整数。
给定一个由小写字母组成的字符串s,判断s是否可以被多次重复构成。如果可以,返回true;否则,返回false。
例如,对于字符串s = "abcabc",它可以重复构成2次,因此返回true;对于字符串s = "aabb",它不可以被多次重复构成,因此返回false。
我们可以将字符串s分成两段,每一段都是原字符串的除了最后N个字符的部分。如果原字符串可以由某个子串重复构成,那么s的前一半和后一半应该是完全相同的。因此我们可以使用slicing切片操作,将s分成前后两半,然后判断它们是否相等。
def repeatedSubstringPattern(s: str) -> bool:
"""
判断字符串s是否可以被多次重复构成。
"""
if not s:
return False
n = len(s)
# 枚举重复字符串的长度
for i in range(1, n//2 + 1):
# 如果字符串s可以被长度为i的字符串重复构成,并且s的长度是i的倍数,那么s一定可以被多次重复构成
if n % i == 0 and s[:i] * (n//i) == s:
return True
return False
参数:
s
:给定的字符串返回值:
算法复杂度: