栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在给定字符串中按字母顺序查找最长的字母子字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在给定字符串中按字母顺序查找最长的字母子字符串

这里的问题是,

result
final
指向同一个列表。您可能会考虑
+=
在发出时会创建一个新列表
result += letters
,但不会:

>>> x = [1,2]>>> y = x>>> x += [3]>>> x[1, 2, 3]>>> y[1, 2, 3]>>> x is yTrue

但是,当您使用时

x = x + [3]

>>> x = [1,2]>>> y = x>>> x = x + [3]>>> x[1, 2, 3]>>> y[1, 2]>>> x is yFalse

有关此行为的解释,看到这个问题。这是您的

for
循环中发生的事情(原始代码的编辑:),这是字符串中
letters
的最后一个
a
字符:

  1. 刚开始时,
    final
    result
    都指向
    ['b', 'e', 'g', 'g', 'h']
  2. 之后
    result += 'a'
    final
    result
    都指向
    ['b', 'e', 'g', 'g', 'h', 'a']
  3. 现在
    elif
    输入了块,结果将指向一个新列表
    ['a']
    ,而
    final
    仍然指向
    ['b', 'e', 'g', 'g', 'h', 'a']
  4. final
    此后将不再更新

因此,可以通过更改原始代码(在编辑之前)进行修复

result += letters

result = result + [letters]

s = 'azcbobobegghakl'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(final)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号