我试图生成代码以返回输入中按顺序字母顺序排列的子串数。 即输入:' 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。有没有人知道我哪里出错?
答案 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