何时从范围中减去(len(str))

时间:2015-03-12 06:54:20

标签: python

problem 1

problem 2

答案:

def cat_dog(str):
  count_cat = 0
  count_dog = 0
  for i in range(len(str)-2):
    if str[i:i+3] == 'dog':
      count_dog += 1
    if str[i:i+3] == 'cat':
      count_cat += 1

  return count_cat == count_dog

def count_code(str):
  count = 0
  for i in range(0, len(str)-3):
    if str[i:i+2] == 'co' and str[i+3] == 'e':
      count += 1
  return count

我很困惑为什么有时他们会从range(len(str))中减去2或3。我知道为什么你会减去1,因为计数从0开始。

1 个答案:

答案 0 :(得分:1)

第一个问题如下:

  

如果字符串“cat”和“dog”在给定字符串中出现的次数相同,则返回True

“cat”和“dog”都是长度为3的字符串,您希望避免超出字符串本身的长度。

第二个问题也是如此:

  

返回字符串“code”出现在给定字符串中任何位置的次数,除非我们接受“d”的任何字母,因此“cope”和“cooe”计数。

由于“代码”及其可接受的变体是长度为4的字符串,因此我们将其偏向3,以避免超出我们检查的字符串的长度。