【发布时间】:2017-11-30 13:06:11
【问题描述】:
我是 Python(以及一般编程)的新手。我一直在尝试通过反复试验来学习它,但遇到了问题。
我尝试实现的代码是获取按字母顺序排列的最长子字符串。也就是说,
- 对于“abcdeasdccjh”的输入,输出应为“abcde”
- 对于“abbcdabcd”的输入,输出应为“abbcd”
我写的代码如下:
s = 'abbcdabcd'
sub = ''
temp = ''
for index in range(len(s)):
temp = s[index]
for i in range(len(s[index:])):
if index+i+1 < len(s):
if s[index+i+1] < s[index+i]:
break
else:
temp += s[index+i+1]
if len(temp) >= len(sub):
sub == temp
print('final ',sub)
这可能不是为此实现的最佳逻辑,但它似乎正在工作。问题是,最终的打印语句不断打印子变量的初始值。我该如何克服这个问题?
PS:出于上述目的,如果有更好的算法我可以使用,请随时在 cmets 中分享。不过,现在这对我来说只是次要的事情。
【问题讨论】:
-
您在最后一个 if 语句中进行比较:
sub == temp应该是sub = temp,不是吗? -
是的!我没注意到……谢谢!
标签: python python-3.x for-loop scope anaconda