You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算字符串中指定单词的最长连续重复次数?

问题:识别字符串中单词最长连续重复次数

我想要编写一个函数,用于识别某个单词在字符串中最长连续重复的次数。目标字符串中“hi”的最长连续重复序列为5次,但以下代码输出为4,请问该如何修正?

原代码:

import re
string = 'hihihihihibyebyebyehihihihibyebyebyehihi'
print(len(max(re.compile('(hi+hi)*').findall(string))))

输出:4

解决方案

原代码错误原因

原正则表达式(hi+hi)*逻辑错误:hi+表示匹配h后跟1个或多个i(如hii、hiii),再拼接hi,这完全不是“连续重复的hi”的匹配逻辑,导致匹配到的子串长度计算错误。

修正方案

要匹配连续重复的hi,需用(?:hi)+(非捕获组,避免多余的捕获内容)来匹配一个或多个连续的hi。之后通过计算每个匹配子串的长度除以单个单词hi的长度(2),得到该子串中hi的重复次数,最后取最大值即可。

修正后的代码:

import re
string = 'hihihihihibyebyebyehihihihibyebyebyehihi'
# 找到所有连续的"hi"序列
matches = re.findall(r'(?:hi)+', string)
# 计算每个序列中"hi"的重复次数,取最大值
max_repeat = max(len(match) // 2 for match in matches)
print(max_repeat)

输出:5

另一种实现方式(更直观统计次数)

利用re.finditer遍历所有匹配结果,直接计算每个匹配的重复次数:

import re
string = 'hihihihihibyebyebyehihihihibyebyebyehihi'
max_count = 0
for match in re.finditer(r'(hi)+', string):
    current_count = len(match.group()) // 2
    if current_count > max_count:
        max_count = current_count
print(max_count)

输出:5

内容的提问来源于stack exchange,提问作者asdfghjkl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:12:41