Python如何统计字符串中指定单词的最大连续出现次数
字符串指定单词最大连续出现次数实现方案
你现有代码的问题是直接使用str.count()统计单词总出现次数,没有判断匹配项是否连续,不符合需求。调整思路如下:
- 对每个目标单词单独遍历所有匹配位置,记录上一次匹配的结束索引
- 若当前匹配的起始索引刚好等于上一次匹配的结束索引,说明两次匹配连续,累计连续计数
- 若不连续则重置当前连续计数,全程记录最大的连续计数即可
修改后的可运行代码如下:
import re def maxKOccurrences(sequence, words): result = [] for word in words: max_consec = 0 current_consec = 0 prev_end = -1 # 遍历单词所有非重叠匹配的位置 for match in re.finditer(re.escape(word), sequence): current_start = match.start() if current_start == prev_end: current_consec += 1 else: current_consec = 1 # 更新最大连续次数 max_consec = max(max_consec, current_consec) # 保存本次匹配的结束位置 prev_end = match.end() result.append(max_consec) return result # 测试示例1 x = "ababcbabc" y = ["ab", "babc", "bca"] print(maxKOccurrences(x, y)) # 输出结果 [2, 2, 0] # 测试示例2 x2 = "abrtfhg" print(maxKOccurrences(x2, y)) # 输出结果 [1, 0, 0]
代码中使用re.escape()是为了避免目标单词包含正则特殊字符时匹配出错,符合通用场景需求。
内容的提问来源于stack exchange,提问作者Marioko53
相关产品推荐
相关产品推荐

