Python 为什么我只得到一个错误的测试用例,而所有其他的都是正确的?
问题: 回文是一个前后读相同的字符串。对于 例如,字符串“z”、“aaa”、“aba”和“abccba”是回文, 但“代码部队”和“ab”并非如此。你讨厌回文是因为它们 给你似曾相识的感觉 有一个字符串s。您必须只插入一个字符“a” 在美国某地。如果可以创建一个不是 回文,你应该找到一个例子。否则,你应该报告 这是不可能的 例如,假设s=“cbabc”。通过插入“a”,您可以创建 “acbabc”、“cababc”、“cbaabc”、“cbabac”或“cbabca”。然而,“cbaabc” 是回文,因此必须输出其他选项之一 输入第一行包含一个整数t(1≤T≤104)-测试用例的数量 每个测试用例的唯一一行包含一个字符串s,该字符串由 小写英文字母 所有字符串的总长度不超过3⋅105 输出对于每个测试用例,如果没有解决方案,则输出“否” 否则,输出“YES”,后跟构造的长度字符串 |下一行是s |+1。如果有多个解决方案,您可以打印 任何 您可以在任何情况下打印“是”和“否”的每个字母(大写或小写) 较低) 示例 输入 6. cbabc ab 扎 文学士 A. 章鱼 输出 对 cbabac 对 aab 对 扎扎 对 咩 不 对 章鱼 我的解决方案:Python 为什么我只得到一个错误的测试用例,而所有其他的都是正确的?,python,Python,问题: 回文是一个前后读相同的字符串。对于 例如,字符串“z”、“aaa”、“aba”和“abccba”是回文, 但“代码部队”和“ab”并非如此。你讨厌回文是因为它们 给你似曾相识的感觉 有一个字符串s。您必须只插入一个字符“a” 在美国某地。如果可以创建一个不是 回文,你应该找到一个例子。否则,你应该报告 这是不可能的 例如,假设s=“cbabc”。通过插入“a”,您可以创建 “acbabc”、“cababc”、“cbaabc”、“cbabac”或“cbabca”。然而,“cbaabc” 是
n=int(input())
for i in range (0,n):
x=input().split()
l=len(x)
for j in range (0,l):
x.insert(j,"a")
if x == x[::-1]:
print("NO")
del x[j]
else:
z=''.join(map(str,x))
print("YES")
print(z)
del x[j]
continue
我运行了上面给出的示例。所有测试用例都是正确的,除了“zza”,在这种情况下,我得到的是“azza”,而我应该得到“zaza”。代码告诉我它不是回文,我不知道为什么
请帮忙。我觉得你把这个问题复杂化了。为什么不试试呢
def func(word):
outcomes = []
word = [char for char in word]
for i in range(len(word) + 1):
word.insert(i, "a")
if word != word[::-1]:
outcomes.append("".join(word))
word.pop(i)
return list(set(outcomes))
print(func('abba'))
看起来简单多了。
列表(set(outcouts))
只是一个删除所有重复项的肮脏把戏这会产生您使用大致相同的原理寻求的结果。其中一个关键点是,在你尝试每个位置之前,你不能打印“否”,当你得到“是”时,你需要停止检查
str.split
不是将字符串转换为其字符列表的正确函数。问题是,如果确实找到回文,则不会在再次循环之前删除该字母。如果,则需要删除两半中的字母。或者,您可以每次复制一份列表并进行操作。@TimRoberts,但我正在使用del x[j]@TigerhawkT3删除,那么我应该使用什么呢?split添加了“”,但我认为这是可行的。'hello'.split()
产生['hello']
<代码>列表('hello')
生成['h','e','l','l','o']
。当你不能完全确定你在用什么的时候,加一行打印出来,这样你就可以看到了。我还没有研究过集合。你能帮我找出我的代码中到底有什么错误吗?因为每次我运行它时,只有一个测试用例是不正确的,其他的都是正确的。真运算符的惊人用法。我从中学到了很多。谢谢这只是一面旗帜。在这种情况下,这是一个非常非常普遍的概念。无论如何,时间限制已经超过了,所以我必须尝试另一种方法。
#n=int(input())
inp = ['cbabc', 'ab', 'zza', 'ba', 'nutforajarofatuna']
n = len(inp)
for i in range(n):
x=list(inp[i])
l=len(x)
found = False
for j in range(l):
x.insert(j,"a")
if x != x[::-1]:
z=''.join(map(str,x))
print("YES")
print(z)
found = True
del x[j]
if found:
break
if not found:
print("NO")