python如何查找连着的相同字符

python如何查找连着的相同字符

作者:Rhett Bai发布时间:2026-01-14阅读时长:0 分钟阅读次数:4

用户关注问题

Q
如何使用Python查找字符串中连续出现的相同字符?

我想在Python中找到字符串里连续出现的相同字符,比如连续的'aa'或'bbb',有哪些方法可用?

A

使用正则表达式查找连续相同字符

Python的re模块可以通过正则表达式实现查找连续相同字符。可以使用模式(.)\1+,该模式匹配任意字符后跟一个或多个相同字符。例如:import re
pattern = re.compile(r'(.)\1+')
matches = pattern.findall('aaabbcddddd')
这样就能找到所有连续重复的字符。

Q
有没有不使用正则表达式的方法来找出字符串中相邻的相同字符?

除了正则表达式,我能否通过循环或其他字符串操作方法来查找连续相同字符?

A

通过遍历字符串实现连续字符检测

可以使用循环遍历字符串的每个字符,比较当前字符与下一个字符是否相同,连续相同则记录下来。例如:
result = []
count = 1
for i in range(1, len(s)):
if s[i] == s[i-1]:
count += 1
else:
if count > 1:
result.append(s[i-1]*count)
count = 1

处理结尾

if count > 1:
result.append(s[-1]*count)
这样就能在不使用正则的前提下找到所有连续相同的字符序列。

Q
如何统计字符串中最长的连续相同字符段?

我需要知道一段字符串中,最长连续相同字符的长度和具体字符,Python应如何实现?

A

利用遍历记录最长连续字符及其长度

可以通过遍历字符串并统计每个连续字符段的长度来实现。保存最长长度以及对应字符。示例如下:
max_len = 1
cur_len = 1
max_char = s[0]
for i in range(1, len(s)):
if s[i] == s[i-1]:
cur_len += 1
else:
if cur_len > max_len:
max_len = cur_len
max_char = s[i-1]
cur_len = 1

末尾处理

if cur_len > max_len:
max_len = cur_len
max_char = s[-1]
print(f'最长连续字符是{max_char}, 长度为{max_len}')