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

如何实现判断字符串无连续7个相同字符的Python函数?

解决字符串连续7个相同字符的判断问题

嘿,别发愁啦!这个需求其实不难实现,我给你分享两种实用的方法,你可以按需选择:

方法1:遍历计数法(基础直观)

这个方法是通过遍历字符串,逐个统计连续相同字符的数量,一旦发现有连续7个就返回False,遍历结束都没发现就返回True。

修改你的函数如下:

def func(string):
    if len(string) < 7:  # 字符串长度不足7,直接返回True
        return True
    count = 1
    prev_char = string[0]
    for char in string[1:]:
        if char == prev_char:
            count += 1
            if count == 7:  # 找到连续7个相同字符
                return False
        else:
            count = 1  # 字符不同,重置计数器
            prev_char = char
    return True  # 遍历完都没找到连续7个

思路解释:

  • 先判断字符串长度,如果小于7,肯定不可能有连续7个相同字符,直接返回True
  • 初始化计数器count为1(第一个字符本身算1个),记录前一个字符prev_char
  • 从第二个字符开始遍历,和前一个字符比较:
    • 相同就把计数器加1,一旦计数器到7,立刻返回False
    • 不同就重置计数器为1,更新前一个字符为当前字符
  • 遍历完成后没触发返回False,就说明没有连续7个相同字符,返回True

方法2:正则表达式法(简洁高效)

如果你熟悉正则表达式,这个方法会更简洁。我们可以用正则匹配任意连续7个相同字符,如果匹配不到就返回True。

修改后的函数:

import re

def func(string):
    # 正则表达式解释:(.)匹配任意单个字符,\1{6}表示和第一个捕获组相同的字符重复6次,加起来就是7次
    return not re.search(r'(.)\1{6}', string)

思路解释:

  • re.search()函数会在字符串中查找是否有匹配正则的子串
  • 如果找到连续7个相同字符,re.search()会返回一个匹配对象(非空),not之后就是False
  • 如果没找到,re.search()返回None,not之后就是True,正好符合我们的需求

关于字符串方法的说明

其实Python的字符串内置方法里没有直接用来检测连续n个相同字符的,但上面两种方法都能很好地解决问题。如果不想用正则,遍历计数法是最基础也最容易理解的方式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:23:01