如何使用Python查找字符串中最长连续重复字符序列
实现逻辑说明
collections.Counter仅能统计字符在整个字符串中的总出现次数,无法区分连续片段,需要补充遍历逻辑统计连续重复的字符序列。
方案1:轻量实现(面试场景推荐,无额外依赖)
a = 'abcxyzaaaabbbbbbb' if not a: print("") else: max_len = current_len = 1 max_char = current_char = a[0] for c in a[1:]: if c == current_char: current_len += 1 if current_len > max_len: max_len = current_len max_char = current_char else: current_char = c current_len = 1 print(max_char * max_len)
运行输出:
bbbbbbb
方案2:基于原有代码补充逻辑(保留pandas、collections依赖)
import pandas as pd import collections a = 'abcxyzaaaabbbbbbb' if not a: res = "" else: # 提取所有连续重复片段 continuous_seqs = [] current_char = a[0] current_len = 1 for c in a[1:]: if c == current_char: current_len += 1 else: continuous_seqs.append(current_char * current_len) current_char = c current_len = 1 # 加入最后一个片段 continuous_seqs.append(current_char * current_len) # 取最长的片段 res = max(continuous_seqs, key=lambda x: len(x)) # 保留原有统计逻辑,调整为统计连续片段长度 seq_counter = collections.Counter({seq: len(seq) for seq in continuous_seqs}) df = pd.Series(seq_counter) print(df) print("最长连续重复序列:", res)
运行后会先输出所有连续片段的长度统计Series,最后输出预期结果bbbbbbb。
内容的提问来源于stack exchange,提问作者user17086826
相关产品推荐
相关产品推荐

