使用Python打印最长的字母顺序子字符串,对于领带,打印第一个子字符串
假设s是一个小写字符字符串。 编写一个程序,打印字母按字母顺序排列的s的最长子字符串 例如,如果s='azcbobobegbegghakl',那么您的程序应该打印 按字母顺序排列的最长子字符串是:beggh 如果是领带,请打印第一个子字符串。例如,如果s='abcbcd',那么您的程序应该打印 按字母顺序排列的最长子字符串为:abc 这是我找到的代码。我如何实施上述问题中关于关系的后一个条件使用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 = 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”,你就会明白我的意思。