3 回答

TA貢獻1799條經驗 獲得超6個贊
您可以使用 aregex來查找 char ( ) 的重復(\w)\1+,然后獲取匹配的位置(使用m.start()和m.end())
values = ['aaabca', 'helllooo', 'hellooo', 'abcd']
for value in values:
m = re.search(r'(\w)\1+', value)
if m:
print(f'{value:10s}{str((m.start(), m.end() - 1)):10s}{m.group(0)}')
else:
print(f'{value:10s}{str((-1, -1)):10s}')
給予
aaabca (0, 2) aaa
helllooo (2, 4) lll
hellooo (2, 3) ll
abcd (-1, -1)
筆記
要更改搜索重復項的字符類型,請替換\w
(\d)\1+
重復一個數字(.)\1+
任何字符的重復([a-z])\1+
重復小寫字母...

TA貢獻2016條經驗 獲得超9個贊
這是一種方法
x = "helllooo"
count = 0
start = -1
end = -1
for i in range(len(x)-1):
if x[i] == x[i+1]:
if count == 0:
start = i
count += 1
end = start + count
else:
if count > 0:
break
count = 0
print(start, end)

TA貢獻1860條經驗 獲得超9個贊
word_list=['aaabca','helllooo','hellooo','abcd']
def find(word):
? ? first_char=[]
? ? index_list=[]
? ? for n,i in enumerate(word):
? ? ? ? ?
? ? ? ? if n+1<len(word):
? ? ? ? ? ??
? ? ? ? ? ? if i==word[n+1]:
? ? ? ? ? ? ? ? first_char.append(i)
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? while first_char[0]==i:
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? index_list.append(n)
? ? ? ? ? ? ? ? ? ? index_list.append(n+1)
? ? ? ? ? ? ? ? ? ? break
? ? try:
? ? ? ? print(index_list[0],index_list[-1])
? ? except:
? ? ? ? print(-1,-1)
? ??
for word in word_list:
? ? find(word)
添加回答
舉報