Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试生成检查字符串的算法,然后输出最长的子字符串_Python_Algorithm_Computer Science_Longest Substring - Fatal编程技术网

Python 尝试生成检查字符串的算法,然后输出最长的子字符串

Python 尝试生成检查字符串的算法,然后输出最长的子字符串,python,algorithm,computer-science,longest-substring,Python,Algorithm,Computer Science,Longest Substring,唯一的问题是必须按字母顺序排列:其中unicode值大于前一个字符。如果我有一个带有字母“owdnloquxat”的字符串,那么它将只打印“loqux”,因为这是按字母顺序排列的最长的子字符串 我试过这个代码。然而,在这种情况下,它只打印“az”,但它应该打印“beggh” s='azcbobebeghakl' sList=列表 sub=s[0] 长,长=短,1 对于s[1:]中的i: 如果ord(sub[-1])这里有一个 s = 'azcbobobegghakl' c = s[0] bes

唯一的问题是必须按字母顺序排列:其中unicode值大于前一个字符。如果我有一个带有字母“owdnloquxat”的字符串,那么它将只打印“loqux”,因为这是按字母顺序排列的最长的子字符串

我试过这个代码。然而,在这种情况下,它只打印“az”,但它应该打印“beggh”

s='azcbobebeghakl'
sList=列表
sub=s[0]
长,长=短,1
对于s[1:]中的i:
如果ord(sub[-1])这里有一个

s = 'azcbobobegghakl'

c = s[0]
best = ""
for i in s[1:]:
    if i >= c[-1]:
        c += i
    else:
        if len(c) > len(best):
            best = c
        c = i

if len(c) > len(best):
    best = c


print(best)
这里有一个

s = 'azcbobobegghakl'

c = s[0]
best = ""
for i in s[1:]:
    if i >= c[-1]:
        c += i
    else:
        if len(c) > len(best):
            best = c
        c = i

if len(c) > len(best):
    best = c


print(best)

你应该给你的问题一个更好的标题,比如:“按字母顺序查找最长的子字符串”。这里回答了类似的问题:您只检查以第一个字母开头的子字符串,这就是为什么您只能找到az。您应该将代码封装在另一个for循环中,该循环将更改起始字母。您应该为您的问题提供更好的标题,例如:“按字母顺序查找最长的子字符串”。这里回答了类似的问题:您只检查以第一个字母开头的子字符串,这就是为什么您只能找到az。你应该把你的代码包装在另一个for循环中,这个循环会改变起始字母。我觉得你的方法应该是正确的。但是没有必要显式地构建字符串
c
(使算法二次化)-只需记住开始索引并将每个字符与前一个字符进行比较。你是对的,不断忘记字符串是不可变的:-)我觉得你的方法应该是正确的。但不需要显式地构建字符串
c
(使算法二次化)-只需记住开始索引并将每个字符与前一个字符进行比较。你是对的,不要忘记字符串是不可变的:-)