代码看不太懂
在第七行代码中each1作为目标字符串的索引值为什么each1的取值只是从0到length-1,为什么不是整个目标字符串的长度?还有range(length-1)它的取值是从0到length-2,这种查找子字符串在目标字符串中出现多少次的题目不是要搜索完整个目标字符串吗? 本帖最后由 Daniel_Zhang 于 2021-1-28 23:31 编辑
很简单的道理啊
只需要对照到字符串倒数第二个字符就够了
例如一个长字符串
str1 = 'abcdef'
子字符串 str2 = 'ac'
一共有六位对吧(length = 6),倒数第二位是 'e' 然后编号(角标)是 4 也就是 length - 2
此时 'abcdef'
'ac'
'e' 和 'a' 对照,不相同,就得后移
'abcdef'
'ac'
因为你的子字符串是两位,如果对照到倒数第二个字符,依旧没有相同,就不需要再对照了,因为此时只剩下最后一位了,一位无论如何都不会和两位相同
但是,一定要写成 range(length - 1) 因为如果你不 -1 的话,后面会继续对照,也就是 'f' 和子字符串的第一位对照了以后,'f' 后面就没了,但是又需要对照,就会出现 out of range 的错误{:10_245:} 还是蛮好理解的嘛。length-1是因为后边还有each+1,如果不减去一个到最后岂不是越界报错了?不过写代码多少感觉还是有些歧义的,比如要在thank you sooo much中找oo,应该是1个还是2个?这个代码的话就是2个 {:10_323:}
页:
[1]