Python:每日一题 341
今天的题目:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。
说明:给定的字符串只含有小写英文字母。
示例 1:
输入:"abab"
输出:True
解释:可由子字符串 "ab" 重复两次构成。
示例 2:
输入:"aba"
输出:False
示例 3:
输入:"abcabcabcabc"
输出:True
解释:可由子字符串 "abc" 重复四次构成。(或者子字符串 "abcabc" 重复两次构成。)
{:10_298:}欢迎大家一起答题!{:10_298:} 这样可以吗:
输入:"abbab"
输出:True
解释:可由子字符串 "ab" 重复二次构成。
一个账号 发表于 2020-3-2 20:07
这样可以吗:
输入:"abbab"
不可以 zltzlt 发表于 2020-3-2 20:08
不可以
子串数量必须大于 1 并且要连在一起对吧 一个账号 发表于 2020-3-2 20:12
子串数量必须大于 1 并且要连在一起对吧
是,必须只能由重复若干次的子串构成 def func(str1):
str2 = ""
str3 = ""
for i in range(len(str1)):
for j in range(i, len(str1)):
str2 += str1
if len(str2) > 1:
for k in range(j+1, len(str1)):
str3 += str1
if str2 == str3:
return True
str3 = ""
str2 = ""
return False 先试试
def f341(s):
st = ''
for i in range(len(s)):
if s not in st and s not in st:
st += s
else:
st += s
break
if len(s) % len(st):
return False
else:
return True
s = "abab"
s1 = "aba"
s2 = "abcabcabcabc"
print(f341(s2)) 一个账号 发表于 2020-3-2 20:21
解答错误
输入:"bb"
输出:False
预期结果:True 优化了一下:
def func(str1):
str2 = ""
str3 = ""
for i in range(len(str1)):
for j in range(i, len(str1)):
str2 += str1
if len(str2) > 1:
for k in range(j+1, len(str1)):
str3 += str1
if str2 == str3:
return True
if len(str3) >= len(str2):
break
str3 = ""
str2 = ""
return False kinkon 发表于 2020-3-2 20:23
先试试
解答错误
输入:"abac"
输出:True
预期结果:False def fun341():
str1 = input()
str2 = str1
if str2*2==str1:
print(True)
else:
print(False) 寻风 发表于 2020-3-2 20:26
def fun341():
str1 = input()
str2 = str1
解答错误
输入:"ababab"
输出:False
预期结果:True 一个账号 发表于 2020-3-2 20:27
我这里是 False,你再运行运行:
? zltzlt 发表于 2020-3-2 20:28
?
搞错了,看成别人的了{:10_245:} 本帖最后由 fan1993423 于 2020-3-2 20:33 编辑
def fun341(s):
if len(set(s))==1 and len(s)!=1:
return True
elif len(s)==1:return False
for i in range(len(s)//2):
if s[:i+1]*(len(s)//len(s[:i+1]))==s:
return True
return False 我还以为 1 个字符不算子串,把 if 去掉了:
def func(str1):
str2 = ""
str3 = ""
for i in range(len(str1)):
for j in range(i, len(str1)):
str2 += str1
for k in range(j+1, len(str1)):
str3 += str1
if str2 == str3:
return True
elif len(str3) >= len(str2):
break
str3 = ""
str2 = ""
return False fan1993423 发表于 2020-3-2 20:30
解答错误
输入:"a"
输出:True
预期结果:False 本帖最后由 kinkon 于 2020-3-3 19:57 编辑
应该没错误了,请测试
def f341(s):
ls = len(s)
if ls <= 1:return False
#if ls%2: return False
st = [::-1]
for i in st:
if s[:i]*(ls//i) == s:
return True
return False 一个账号 发表于 2020-3-2 20:30
我还以为 1 个字符不算子串,把 if 去掉了:
解答错误
输入:"abab"
输出:False
预期结果:True zltzlt 发表于 2020-3-2 20:31
解答错误
输入:"a"
好吧,我想到可以由a构成