zltzlt
发表于 2020-3-3 10:50:21
一个账号 发表于 2020-3-3 10:49
什么意思?
双重 for 循环
一个账号
发表于 2020-3-3 10:52:54
zltzlt 发表于 2020-3-3 10:50
双重 for 循环
我知道你什么意思了
Croper
发表于 2020-3-3 10:59:32
这样在字符串极长时仿佛要快一点点,自己测试长度在100万时大概快30msdef func(sz:str)->bool:
l=len(sz)
if (l<2):
return False
next=[-1,0]+*l
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=p
if q==l:
return True
return False
whosyourdaddy
发表于 2020-3-3 12:15:43
def func341(str):
count = len(str)
i = count
flag = 0
while i!= 1:
i -= 1
if count%i == 0:
j = i-1
while j!=count-1 :
temp1 = str
temp2 = str
if temp1 == temp2:
j = j+i
if j==count-1:
flag = 1
continue
else:
break
if flag == 1:
return True
else:
continue
return False
fnezdu
发表于 2020-3-3 12:52:23
新手报到,请多关照!{:9_241:}
黎影
发表于 2020-3-3 13:52:43
wuqramy 发表于 2020-3-3 09:58
万一你遇到了这样的字符串怎么办:
由abcdefghijklmnopqrstuvwxyz循环组成
用最笨的方法,引用一个文本,按顺序调用数字
wuqramy
发表于 2020-3-3 14:27:00
本帖最后由 wuqramy 于 2020-3-3 14:30 编辑
黎影 发表于 2020-3-3 13:52
用最笨的方法,引用一个文本,按顺序调用数字
那不如直接把number1写上去:
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)))
print('解析:可有子字符"%s"重复%s次构成。'%(str2,number1))
黎影
发表于 2020-3-3 15:11:52
wuqramy 发表于 2020-3-3 14:27
那不如直接把number1写上去:
汉字耶
wuqramy
发表于 2020-3-3 15:17:31
黎影 发表于 2020-3-3 15:11
汉字耶
一定要汉字吗
黎影
发表于 2020-3-3 15:57:04
wuqramy 发表于 2020-3-3 15:17
一定要汉字吗
是呀!
wuqramy
发表于 2020-3-3 15:59:43
黎影 发表于 2020-3-3 15:57
是呀!
那很麻烦的!
风魔孤行者
发表于 2020-3-3 16:05:22
虽然把小甲鱼的视频都看完了,但是感觉自己还是只会用 if
string = input('请输入字符串:')
length = len(string)
prime = []
judge = False
if length == 1:
print('请输入至少2个字符')
elif length ==2:
if string*2 == string:
judge = True
else:
for i in range(2,length):
if length%i == 0:
prime.append((i,length/i))
for n in prime:
if string[:n] * int(n) == string:
judge = True
print(string[:(n)]+',重复次数为'+str(int(n)))
print(str(judge))
蒋博文
发表于 2020-3-3 16:09:50
zltzlt 发表于 2020-3-2 20:48
输入以下数据超时:
我的不超时{:10_256:}{:10_256:}
秒出答案{:10_256:}{:10_256:}
要不要看看?
51楼
zltzlt
发表于 2020-3-3 16:10:29
蒋博文 发表于 2020-3-3 16:09
我的不超时
秒出答案
要不要看看?
没有抄袭吗
蒋博文
发表于 2020-3-3 16:10:44
zltzlt 发表于 2020-3-3 16:10
没有抄袭吗
没有啊
蒋博文
发表于 2020-3-3 16:11:52
zltzlt 发表于 2020-3-3 16:10
没有抄袭吗
51楼
黎影
发表于 2020-3-3 16:13:17
wuqramy 发表于 2020-3-3 15:59
那很麻烦的!
是呀,用文本编辑,然后调用应该比较简单
wuqramy
发表于 2020-3-3 16:24:53
zltzlt 发表于 2020-3-2 20:48
输入以下数据超时:
我的也行得通
n = input('n = ')
if len(n) > 1:
for i in range(len(n)):
if n[:i] == n:
print('True')
break
else:
print('False')
else:
print('False')
wuqramy
发表于 2020-3-3 16:26:08
黎影 发表于 2020-3-3 16:13
是呀,用文本编辑,然后调用应该比较简单
但是你想想,如果该字符串循环了上万次怎么办
蒋博文
发表于 2020-3-3 16:28:04
zltzlt 发表于 2020-3-2 20:48
输入以下数据超时:
我的可以:
def fun341(s):
n = len(s)
for i in range(1,n//2+1):
if n%i == 0:
tar = s[:i]
j = i
while j < n and s == tar:
j+=i
if j == n:
return True
return False