def ff_cal_char_rept0(st, n):
times = 0
flag = False
for i in range(0, len(st)):
if i == 0:
times = 1
else:
if st[i - 1] != st[i]:
times = 1
else:
times += 1
if times == n:
flag = True
break
return flag
def ff_cal_char_rept1(st, n):
times = 1
for i in range(1, len(st)):
times = 1 if st[i - 1] != st[i] else times + 1
if times == n:
return True
return False
def ff_cal_char_rept2(st, n):
st_ = set(st)
if len(st) - len(st_) < n-1:
return False
for i in st_:
if i*n in st:
return True
return False
m1 = '888888881'
m2 = '123456789'
m3 = '888888811'
m4 = '123123'
m5 = 'ININININININININININIII'
m6 = m5*10
m7 = '888888878'
m8 = 'QWERTYUIOP_*&^%$#@!ASDFGH)ZXCVBNMLKJ'
m9 = '88888888888'
m = [m1, m2, m3, m4, m5, m6, m7, m8, m9]
for i in m:
print(i+':')
%time ff_cal_char_rept0(i, n=8)
%time ff_cal_char_rept1(i, n=8)
%time ff_cal_char_rept2(i, n=8)
print(ff_cal_char_rept0(i, n=8), ff_cal_char_rept1(i, n=8), ff_cal_char_rept2(i, n=8))
print('\n')
# 全面测试
"""
888888881:
CPU times: user 8 µs, sys: 2 µs, total: 10 µs
Wall time: 14.1 µs
CPU times: user 7 µs, sys: 1e+03 ns, total: 8 µs
Wall time: 11.9 µs
CPU times: user 8 µs, sys: 0 ns, total: 8 µs
Wall time: 12.2 µs
True True True
123456789:
CPU times: user 17 µs, sys: 3 µs, total: 20 µs
Wall time: 19.3 µs
CPU times: user 0 ns, sys: 11 µs, total: 11 µs
Wall time: 33.1 µs
CPU times: user 8 µs, sys: 1 µs, total: 9 µs
Wall time: 14.1 µs
False False False
888888811:
CPU times: user 9 µs, sys: 1 µs, total: 10 µs
Wall time: 16.2 µs
CPU times: user 9 µs, sys: 2 µs, total: 11 µs
Wall time: 15 µs
CPU times: user 7 µs, sys: 0 ns, total: 7 µs
Wall time: 11.2 µs
False False False
123123:
CPU times: user 6 µs, sys: 1 µs, total: 7 µs
Wall time: 10.5 µs
CPU times: user 7 µs, sys: 0 ns, total: 7 µs
Wall time: 10 µs
CPU times: user 5 µs, sys: 1 µs, total: 6 µs
Wall time: 9.78 µs
False False False
ININININININININININIII:
CPU times: user 8 µs, sys: 1 µs, total: 9 µs
Wall time: 13.1 µs
CPU times: user 7 µs, sys: 1 µs, total: 8 µs
Wall time: 11.7 µs
CPU times: user 7 µs, sys: 0 ns, total: 7 µs
Wall time: 10.7 µs
False False False
ININININININININININIIIININININININININININIIIININININININININININIIIININININININININININIIIININININININININININIIIININININININININININIIIININININININININININIIIININININININININININIIIININININININININININIIIININININININININININIII:
CPU times: user 34 µs, sys: 0 ns, total: 34 µs
Wall time: 37 µs
CPU times: user 25 µs, sys: 5 µs, total: 30 µs
Wall time: 33.9 µs
CPU times: user 0 ns, sys: 10 µs, total: 10 µs
Wall time: 14.1 µs
False False False
888888878:
CPU times: user 6 µs, sys: 1 µs, total: 7 µs
Wall time: 11.7 µs
CPU times: user 6 µs, sys: 1 µs, total: 7 µs
Wall time: 10.7 µs
CPU times: user 7 µs, sys: 0 ns, total: 7 µs
Wall time: 10.7 µs
False False False
QWERTYUIOP_*&^%$#@!ASDFGH)ZXCVBNMLKJ:
CPU times: user 11 µs, sys: 2 µs, total: 13 µs
Wall time: 16.7 µs
CPU times: user 11 µs, sys: 0 ns, total: 11 µs
Wall time: 14.5 µs
CPU times: user 8 µs, sys: 1 µs, total: 9 µs
Wall time: 12.4 µs
False False False
88888888888:
CPU times: user 6 µs, sys: 1 µs, total: 7 µs
Wall time: 11 µs
CPU times: user 0 ns, sys: 7 µs, total: 7 µs
Wall time: 10.7 µs
CPU times: user 6 µs, sys: 1 µs, total: 7 µs
Wall time: 10.5 µs
True True True
"""