Python用for循环查找字符串重复字符为何要在外层循环重置count变量
问题解答
你代码里的count变量,作用是统计外层循环当前遍历到的字符s[i],在它后续的字符串位置中出现重复的次数。
为什么必须在外层循环内重置count为0,原因很简单:
- 函数开头的
count = 0只是给这个变量做初始化声明,仅在第一次进入外层循环时生效。 - 每一轮外层循环处理的都是完全不同的字符,如果不在每轮外层循环开始时把
count重置为0,上一轮字符统计得到的重复次数会被保留,直接累加到当前字符的统计结果里,最终得到完全错误的判断。
你可以用简单的输入测试下不重置的效果,比如输入字符串是"aab":
- 第一轮i=0,处理字符
a,内层循环统计到后面有1个重复的a,count变为1,正常打印a,此时count的取值是1 - 第二轮i=1,处理字符
a,如果不重置count,它的值还是上一轮的1,内层循环遍历后面的字符b没有匹配,count维持1不变,程序就会错误地再次打印a,但实际上这个位置的a后面已经没有重复字符了。
额外补充个小细节:你现在的判断条件if count == 1,只会打印出刚好在后续出现1次重复的字符,如果某个字符后续出现2次及以上的重复(比如输入"aaab"),是不会被打印的。如果你想要找出所有存在重复的字符,可以把判断条件改成if count >= 1。
内容的提问来源于stack exchange,提问作者N Chi
相关产品推荐
相关产品推荐

