python - 按字母顺序排列的最长子字符串给出了意外的输出
问题描述
我的问题与这个封闭的一个 -按字母顺序排列的最长子字符串有些相关,但不正确。
String s
这是我的python代码,用于打印其中字母按字母顺序出现的最长子字符串。
s = 'azcbobobegghakl'
chow = ''
stuff = []
for e in s:
if(s.find(e) < (len(s)-1)): #fix indexoutofrange
if(e <= s[s.find(e) + 1]): #just checking the next char
chow = chow + e #sum up
else:
stuff.append(chow)
chow = '' # reset chow
else:
stuff.append(chow) #edit
if(len(stuff)==1):
print(stuff[0])
elif(len(stuff)==0):
print('')
else:
print(max(stuff,key=len))
我知道有人会在 StackOverflow 上找到更好的代码。但是,我的问题是为什么我没有得到代码的预期行为?
测试用例:
- 'azcbobobegghakl' → ' begg ' | “乞求”是对的
- 'abcbcd' → ' ab ' | 'abc' 是对的。
- 'afzeolnfabcdefoooda' → ' fabcdef ' | 'abcdefooo' 是对的
我可以看到,最后一个字符有时没有添加,或者有时第一个字符是错误的。
请具体回答错误区域并描述原因,而不是修复代码。
解决方案
对于最后一个字符消失,我认为问题在于您没有在将字符串附加到列表之前添加最后一个字符。可以通过以下修复来修复此问题:
s = 'azcbobobegghakl'
chow = ''
stuff = []
for e in s:
if(s.find(e) < (len(s)-1)): #fix indexoutofrange
if(e <= s[s.find(e) + 1]): #just checking the next char
chow = chow + e #sum up
else:
chow = chow + e #[FIX]Add the last char before append to list
stuff.append(chow)
chow = '' # reset chow
print(max(stuff,key=len))
推荐阅读
- ansible - 升级到 ansible 2.8 后,include_tasks 不能与 become 一起使用
- visual-studio-code - nuget 包的本地来源不存在
- java - Lambda 表达式在看似相同的 kotlin 中不起作用
- javascript - 如何显示x轴Highcharts的第一个和最后一个标签
- networking - Debian 9 中的静态 IP 和 DNS
- javascript - Web API 在同一个浏览器中缓存 2 个结果
- dynamics-crm - 如何从 MS Dynamics 365 在电子邮件中发送导出 excel 或 CSV?
- android - 回收视图不显示文本完全设置顶部约束到文本视图
- angular - 我是否从 Renderer2 的 .listen 函数中正确取消订阅?
- php - Python 中的 PHP openssl_get_privatekey 和 openssl_sign