Codecademy习题subLength()函数len=-1及字符间距计算逻辑疑问
代码逻辑解释
1. len = -1的作用
这里的初始值-1是作为未找到第一个目标字符的标记位:
因为字符串的索引是从0开始的正整数,-1不可能是合法的字符串索引,所以用这个值来区分「还没记录第一个目标字符的位置」的状态:
- 遍历过程中第一次匹配到目标字符时,
len还是初始值-1,就会把当前字符的索引赋值给len,用来保存第一个目标字符的位置 - 第二次匹配到目标字符时,
len已经不是-1了,就会进入长度计算的分支
2. 包含两个目标字符的子串长度计算逻辑
要求返回的是包含两个目标字符的子串长度,计算逻辑对应代码里的i - len + 1:
- 此时
len保存的是第一个目标字符的索引,i是第二个目标字符的索引 - 两个索引的差值
i - len得到的是两个位置之间的间隔数,比如第一个字符在索引2,第二个在索引5,差值是3 - 要同时包含首尾两个字符,就需要在差值基础上加1,上面的例子计算结果就是
5-2+1=4,对应子串长度为4,符合要求。
你可以用实际用例验证:比如调用subLength('school', 'o'),第一个o在索引3,第二个在索引4,计算得4-3+1=2,对应子串oo的长度为2,完全符合需求。
内容的提问来源于stack exchange,提问作者misssn
相关产品推荐
相关产品推荐

