jdzzj
发表于 2020-3-2 22:34:18
def fun341(s):
len_s = len(s)
min_len = len(set(s))# 子字符串最少应当包含所有的不重复元素
substr = s[:min_len - 1]
for i in range(min_len - 1, len(s) // 2 + 1):
substr += s
len_sub = len(substr)
if len_s % len_sub == 0:# 长度匹配的情况下才需要进行判断
for j in range(2, len_s // len_sub + 1):
if substr * j == s:
return True
return False
hhb1988
发表于 2020-3-2 22:37:48
def f341(string):
lenth1 = len(string)
lenth2 = lenth1 // 2
for i in range(lenth1//2):
if lenth1%lenth2 == 0:
n = lenth1 / lenth2
if int(n) * string[:lenth2] == string:
return 1
lenth2 -=1
return 0
string = str(input('请输入一个字符串:'))
if f341(string):
print("是由一个子串重复多次构成!")
else:
print("不是由一个子串重复多次构成!")
蒋博文
发表于 2020-3-2 22:40:10
猫记 发表于 2020-3-2 21:50
def f341(s):
list1 = []
s_len = len(s)
先点击<>将代码复制到上面点击确定,然后点击纯文本旁边的那个对号就可以了
黎影
发表于 2020-3-2 23:07:33
str1 = input('输入:')
number = len(str1)
for a in range(1,(int(number/2))):
str2 = str1[:a]
for b in range(0,number,a):
if str1 != str2:
break
else:
print('输出:True')
number1 = int(number/(len(str2)))
list1 = ('一','二','三','四','五','六','七','八','九','十')
print('解析:可有子字符“%s”重复%s次构成。'%(str2,list1))
walleeee
发表于 2020-3-3 00:22:06
本帖最后由 walleeee 于 2020-3-3 00:39 编辑
string=input('输入:')
booll= False
for i in range(len(string)-1):
booll=booll or (string*(len(string)//(i+1))==string)
print(booll)
在东边
发表于 2020-3-3 00:46:37
import re
def func(s):
pat = re.compile(r"^(+)\1+$")
return bool(pat.search(s))
Python3005
发表于 2020-3-3 05:31:00
import collections
def fun(s):
return len(set(collections.Counter(s).values())) == 1
NAMELESSONE
发表于 2020-3-3 09:25:58
import math
def action(s:str):
def cool(n:int):
l=[]
m=2
if n%2==0:
m=1
for i in range(1,int(math.sqrt(n))+1,m):
if n%i==0:
l.append(i)
l.append(n//i)
l.remove(n)
return list(set(l))
nums=cool(len(s))
for i in nums:
string=s.split(s[:i])
if len(set(string))==1 and set(string).pop()=='':
return True
return False
wuqramy
发表于 2020-3-3 09:45:52
本帖最后由 wuqramy 于 2020-3-3 09:47 编辑
一个账号 发表于 2020-3-2 20:59
你哪弄来这么大的数据
乱敲键盘 + 无数个Ctrl+v 即可
一个账号
发表于 2020-3-3 09:49:17
黎影 发表于 2020-3-2 23:07
str1 = input('输入:')
number = len(str1)
for a in range(1,(int(number/2))):
不用那么麻烦{:10_277:},直接返回 True 或 False 即可
wuqramy
发表于 2020-3-3 09:58:41
黎影 发表于 2020-3-2 23:07
str1 = input('输入:')
number = len(str1)
for a in range(1,(int(number/2))):
万一你遇到了这样的字符串怎么办:
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
由abcdefghijklmnopqrstuvwxyz循环组成{:10_277:}
zltzlt
发表于 2020-3-3 10:09:27
@一个账号 @wuqramy 不要刷屏
wuqramy
发表于 2020-3-3 10:11:14
zltzlt 发表于 2020-3-3 10:09
@一个账号 @wuqramy 不要刷屏
{:10_323:}
Lyton_
发表于 2020-3-3 10:13:24
本帖最后由 Lyton_ 于 2020-3-3 10:35 编辑
def fun21(str1):
i=2
count=0
while i<len(str1):
str2=str1[:i]
i+=1
if str1.count(str2)>1:
count+=1
if count==0:
print('False')
else:
print('True')
一个账号
发表于 2020-3-3 10:15:34
zltzlt 发表于 2020-3-3 10:09
@一个账号 @wuqramy 不要刷屏
你也在刷{:10_249:}
l0stparadise
发表于 2020-3-3 10:40:03
def f341():
str1=input("输入字符串: ")
if len(str1)==1:
return True
for i in range(1,len(str1)):
times=str1.count(str1)
if times==float(len(str1)/i):
return True
else:
return False
Croper
发表于 2020-3-3 10:42:42
大半个月不写python手都生了,返回类型应该写成"=>"还是'->'都反应了半天def func(sz:str)->bool:
l=len(sz)
if (l<2):
return False
next=[-1,0]
p,q=0,1
while q<l:
while p!=-1 and (l%(q-p)!=0 or sz!=sz):
p=next
if q-p>l/2:
break
p+=1
q+=1
next.append(p)
if q==l:
return True
return False
一个账号
发表于 2020-3-3 10:45:13
本帖最后由 一个账号 于 2020-3-3 10:50 编辑
zltzlt 发表于 2020-3-2 20:48
输入以下数据超时:
之前那个我有很多多余的步骤,现在应该快很多了吧:
def func(str1 : str) -> bool:
if len(str1) % 2:
return False
str2 = ""
str3 = ""
for i in range(len(str1)//2):
str2 += str1
for j in range(i+1, i+len(str2)+1):
str3 += str1
if str2 == str3:
if j == len(str1)-1:
return True
str3 = ""
str3 = ""
return False
zltzlt
发表于 2020-3-3 10:48:36
一个账号 发表于 2020-3-3 10:45
之前那个我有很多多余的步骤,现在应该快一点了吧:
改良一下你的双重 for
一个账号
发表于 2020-3-3 10:49:10
zltzlt 发表于 2020-3-3 10:48
改良一下你的双重 for
什么意思?