【问题标题】:Lexicographical value词典价值
【发布时间】:2021-07-18 12:01:45
【问题描述】:

我有一个字符串。我需要替换字符“?”并找到丢失的字符以使其成为字典字符串。例如 - 如果我有字符串“ab”。它的字典值是“aa”。因为第一个字符“a”与第二个字符“b”不同。它给出输出-1。如果我给字符串“ta?a”。在这个字符串中如果我替换 '?'与 t。它变成了字典式。它给出输出“tata”。我正在输入 s 和 k。 K 是 s 长度的一半。请在这段代码中帮助我。

s=input()
k=input()
for i in range(k):
    if (s[i]>=97) and (s[i]<=123):
        if (s[i]==s[i+k]):
            continue
        else:
             s=-1
    
    else:   
        if(s[i]>=s[i+k]):
            s[i+k]=s[i]
        else:
            s[i]=s[i+k]

return s

【问题讨论】:

  • lexicographical value 是什么意思?
  • 你的代码有什么问题?你得到错误的结果吗?展示你得到什么和你期望什么。你有错误吗?始终将有问题的完整错误消息(从“Traceback”一词开始)(不是评论)作为文本(不是屏幕截图,不是指向外部门户的链接)。还有其他有用的信息。
  • 您始终可以使用print() 查看变量中的值,然后您可以将其与纸上的计算进行比较。
  • 首先,return只能在python的类或函数中使用。其次,你不能在 python 中比较一个字符串。 s[i] 只会打印出 s' 的索引 (i)。
  • 您必须在s = -1 之后使用break 退出此循环。如果你不退出循环,那么它将再次运行s[i],它会测量-1[i],这是不正确的。

标签: python string string-matching


【解决方案1】:

我不完全确定我理解你的问题,但这是我的尝试:

s = list(input())
k = int(input())
for i in range(k):
    s[i] = s[i+k] if s[i] == '?' else s[i]
    s[i+k] = s[i] if s[i+k] == '?' else s[i+k]

print(''.join(s) if s[:k] == s[k:] else -1)

对于输入ta?a2,它将输出tata,对于ab1,它将输出-1。请注意,第二个参数无论如何都是多余的,因为您说它只是长度的一半。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多