【问题标题】:Error while inserting one string in another [closed]将一个字符串插入另一个字符串时出错[关闭]
【发布时间】:2020-08-08 03:24:12
【问题描述】:

我有一个字符串 s= 'aaeekmnnry' 和另一个字符串 p = 'aka'。我想在 s 的第二个索引处插入 p,这样我的输出是 ans = 'aaakaeekmnrry'。为此,我编写了以下代码:

f = p[0]
i = 0
while i < len(s):
    if p[0] <= s[i]:
        i+=1
    else:
        break    
ans = ''.join(s[:i]) + ''.join(p) + ''.join(s[i:])

但是我的索引i 变成了字符串的长度,输出是'aaeekmnnryaka',我期待i 变成2。我做错了什么?

【问题讨论】:

  • 您似乎有 2 个不同的标准,描述中的“第二个索引”,但您正在代码中进行比较 if p[0] &lt;= s[i]:,就好像您试图在大于的第一个字符处插入 p p[0]。那么,它是什么?
  • 实际上,我想将p 放在索引处,这样p 的第一个字符就在字典上大于s 的插入位置。你能帮帮我吗?
  • 知道了。顺便说一句,我认为那是 ans = 'aaakaeekmnnry'(两个 n 的一个 r)
  • 仅供参考,'a' 小于或等于 s 中的所有字符。
  • 哦,我明白了,对不起。我已经更正了代码

标签: python string string-comparison


【解决方案1】:

您的条件错误。当您看到s 中的字母按字典顺序更高时,您应该会爆发。

i = 0
while i < len(s):
    if p[0] < s[i]:
        break
    else:
        i += 1

ans = s[:i] + p + s[i:]
# aaakaeekmnnry

【讨论】:

  • 我认为这是正确的。希望OP能澄清条件并将其标记为答案。
【解决方案2】:

你离正确答案只有一个字符!你的&lt;= 想成为&gt;= - 当你的p 字符串的第一个字符大于 比(或等于)s 中的字符时,你不断增加位置您目前正在检查的。除此之外,您的代码是正确的。

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 2012-09-25
    • 2011-05-13
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多