为什么Python使用下面的代码知道答案的字母顺序是正确的?

2024-09-27 07:33:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在介绍计算机科学和使用Python编程时遇到了这个问题:

Assume s is a string of lower case characters.

Write a program that prints the longest substring of s in which the letters occur in alphabetical order. For example, if s = 'azcbobobegghakl', then your program should print: Longest substring in alphabetical order is: beggh.

In the case of ties, print the first substring. For example, if s = 'abcbcd', then your program should print: Longest substring in alphabetical order is: 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如何知道答案的字母顺序是正确的。你知道吗

我知道这可能是个愚蠢的问题。但由于我是编程新手,这个问题的答案对我来说意义重大。


Tags: ofthe答案代码inlongestifis
2条回答

在这个代码中,条件

if s[i+1] >= s[i]

比较两个字符。在python中,比较两个字符时,就是比较它们的ascii代码。如您所见here,字符在ascii表中按字母顺序排列。你知道吗

如果按字母顺序排列,则会添加到可能的解决方案中。在另一种情况下,它只是创建一个新的可能的解决方案。你知道吗

程序跟踪到目前为止发现的最长的字母顺序子串(变量longest)。当它发现一个新的比它已经知道的长(current)时,它会记住那个(longest = current)。你知道吗

相关问题 更多 >

    热门问题