为什么Python使用下面的代码知道答案按字母顺序是正确的?
我在《计算机科学与Python编程入门》中遇到了这个问题: 假设s是一个小写字符字符串 编写一个程序,打印字母按字母顺序排列的s的最长子字符串。例如,如果为什么Python使用下面的代码知道答案按字母顺序是正确的?,python,substring,alphabetical,Python,Substring,Alphabetical,我在《计算机科学与Python编程入门》中遇到了这个问题: 假设s是一个小写字符字符串 编写一个程序,打印字母按字母顺序排列的s的最长子字符串。例如,如果s='azcbobobeghakl',那么您的程序应该按字母顺序打印:最长的子字符串是:beggh 如果是领带,请打印第一个子字符串。例如,如果s='abcbcd',那么您的程序应该按字母顺序打印:最长的子字符串是:abc 我已经阅读了很多关于这个问题的答案(代码)。我可以说我理解这些答案背后的逻辑 然而,我无法理解的是,“Python如何知道
s='azcbobobeghakl'
,那么您的程序应该按字母顺序打印:最长的子字符串是:beggh
如果是领带,请打印第一个子字符串。例如,如果s='abcbcd'
,那么您的程序应该按字母顺序打印:最长的子字符串是:abc
我已经阅读了很多关于这个问题的答案(代码)。我可以说我理解这些答案背后的逻辑
然而,我无法理解的是,“Python如何知道答案按字母顺序是正确的?”
以下是我在网上看到的正确代码,仅供参考:
s = "azcbobobegghakl"
longest = current = s[0]
for i in range (len(s) - 1):
if s[i+1] >= s[i]:
current += s[i+1]
if len(current) > len(longest):
longest = current
else:
current = s[i+1]
print("Longest substring in alphabetical order is:", longest)
同样,我理解代码背后的逻辑。我不知道的是Python如何知道答案按字母顺序是正确的
我知道这可能是个愚蠢的问题。但由于我是编程新手,这个问题的答案对我来说意义重大。该程序跟踪到目前为止发现的最长字母顺序子字符串(变量
最长
)。当它发现一个新的比它已经知道的长(current
)时,它会记住那个(longest=current
) 在此代码中,条件
if s[i+1] >= s[i]
比较两个字符。在python中,当比较两个字符时,就是在比较它们的ascii代码。如您所见,字符在ascii表中按字母顺序排列
如果按字母顺序排列,则会将其添加到可能的解决方案中。在另一种情况下,它只是创建一个新的可能的解决方案。为什么需要排序?如果按字母顺序对字符串进行排序,则按字母顺序排列的最长子字符串将是已排序的字符串本身。再次阅读问题最长的子串是azcbobo[beggh]akl我不明白“理解这些答案背后的逻辑”是什么意思。因为你的例子只是一个普通的简单解决方案。嗨,现在我看我的问题,它的措辞很糟糕。我的意思是Python如何知道答案按字母顺序是正确的。嗨,现在我看看我的问题,它的措辞很糟糕。我的意思是Python如何知道答案是字母正确的。因为字符
I+1
(下一个字符)大于字符I
(当前字符)。