输入字符串中的字母顺序字符串的返回数

问题描述:

我正在尝试生成代码以按顺序字母顺序返回输入内的子字符串的数量。 即输入:“abccbaabccba” 输出:2输入字符串中的字母顺序字符串的返回数

alphabet = 'abcdefghijklmnopqrstuvwxyz' 

def cake(x): 
    for i in range(len(x)): 
     for j in range (len(x)+1): 
      s = x[i:j+1] 
      l = 0 
      if s in alphabet: 
       l += 1 
    return l 

print (cake('abccbaabccba')) 

到目前为止我的代码将只返回1.基于测试我在它做,现在看来,这只是返回1,如果有信件中输入。有没有人看到我要去哪里错了?

您每次都会得到输出1,因为您的代码会将的计数重置为l = 0,而每个都会通过该循环。

如果您解决了这个问题,您将得到答案96,因为您在空字符串中包含大量冗余检查('' in alphabet返回True)。

如果您修复,您将得到17,因为您的测试字符串包含长度为1和2的子字符串,以及3+,也是字母表的子字符串。因此,您的代码需要考虑您想要考虑的最小子字符串长度 - 我认为这是3:

alphabet = 'abcdefghijklmnopqrstuvwxyz' 

def cake(x, minLength=3): 
    l = 0 
    for i in range(len(x)): 
     for j in range(i+minLength, len(x)): # carefully specify both the start and end values of the loop that determines where your substring will end 
      s = x[i:j] 
      if s in alphabet: 
       print(repr(s)) 
       l += 1 
    return l 

print (cake('abccbaabccba'))