返回输入字符串

时间:2016-11-20 20:54:51

标签: string python-2.7 python-3.x substring

我试图生成代码以返回输入中按顺序字母顺序排列的子串数。 即输入:' 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 个答案:

答案 0 :(得分:0)

您每次都会获得输出SELECT GROUP_CONCAT(concat_ws(', ', Lake_name, IFNULL(Area, 'not available'), IFNULL(Altitude, 'not available'), IFNULL(Depth, 'not available'), IFNULL(River_outflow, 'not available') ) SEPARATOR '; ') From LAKE WHERE IFNULL(Lake_name, 'no lakes found') IN (SELECT Lake FROM LOCATION where County IN (SELECT County FROM CITY WHERE City_name='$userinput')) GROUP BY NULL;"; ,因为您的代码会将的每个上的计数重置为1

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

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

True