Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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_Python 2.7_Substring_Alphabetical - Fatal编程技术网

使用Python打印最长的字母顺序子字符串,对于领带,打印第一个子字符串

使用Python打印最长的字母顺序子字符串,对于领带,打印第一个子字符串,python,python-2.7,substring,alphabetical,Python,Python 2.7,Substring,Alphabetical,假设s是一个小写字符字符串。 编写一个程序,打印字母按字母顺序排列的s的最长子字符串 例如,如果s='azcbobobegbegghakl',那么您的程序应该打印 按字母顺序排列的最长子字符串是:beggh 如果是领带,请打印第一个子字符串。例如,如果s='abcbcd',那么您的程序应该打印 按字母顺序排列的最长子字符串为:abc 这是我找到的代码。我如何实施上述问题中关于关系的后一个条件 *s = raw_input('provide string: ') result =

假设s是一个小写字符字符串。 编写一个程序,打印字母按字母顺序排列的s的最长子字符串

例如,如果s='azcbobobegbegghakl',那么您的程序应该打印

按字母顺序排列的最长子字符串是:beggh

如果是领带,请打印第一个子字符串。例如,如果s='abcbcd',那么您的程序应该打印

按字母顺序排列的最长子字符串为:abc

这是我找到的代码。我如何实施上述问题中关于关系的后一个条件

    *s = raw_input('provide string: ')
    result = []
    final = []
    for letters in s:
        result = result + [letters]        
        if result == sorted(result) and len(result) >= len(final):
            final = result            
        elif result != sorted(result):
            result = [result[len(result)-1]]        
    print('Longest substring in alphabetical order is: '+(''.join(final)))*

我将以以下方式处理这个问题:

  • 让我们定义两个字符串:递增字母的
    当前
    字符串和当前
    最长的
    字符串
  • 两个字符串都用第一个字母初始化。(这样我们就可以随时阅读他们的最后一封信。)
  • 然后我们迭代输入字符串
    s
    (从第二个字符开始)
  • 如果当前字符
    c
    满足要求
    c>=当前[-1]
    ,我们将其添加到当前解决方案中
  • 我们可能将
    当前
    字符串存储为
    最长
  • 如果
    c
    无法满足订购要求,我们将从新的解决方案
    current=c
    开始
  • 最后,我们打印
    最长的
    字符串
s=“azcbobebeghakl”
最长=s[0]
电流=s[0]
对于s[1:]中的c:
如果c>=当前[-1]:
电流+=c
如果len(当前)>len(最长):
最长=电流
其他:
电流=c
打印“按字母顺序排列的最长子字符串为:”,最长

如何修复您的代码wrt。上述条件:

在比较
len(result)>=len(final)
时,使用
而不是
=
,即仅在
final
解决方案较长时更新,但在长度相同时不更新


考虑Dylans的评论


你说得对。我更新了代码和描述,以正确处理
s
以最长字母顺序子字符串结尾时的情况。(向下移动
else:
两行就足够了。)

您的问题应该包括您尝试过的代码以及遇到的问题。非常感谢。我是python初学者,不知道如何解决这个问题。您需要在print语句上方添加一行(for循环外),即if len(current)>len(longest):longest=current。因为如果不这样做,forloop中最长=当前的更新可能不会发生。试试测试用例“abcdef”,你就会明白我的意思。