如何实现判断字符串无连续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
相关产品推荐
相关产品推荐

