我不知道如何使代码正常工作。我对解决方案感到困惑,其他条件对我不起作用。最后,答案不一样。
def guess_word(S: str, Q: str):
answers = []
for i in range(len(S)):
if S[i] == Q[i]:
answers.append("correct")
elif Q[i] != S[i]:
for j in range(len(Q)):
if Q[i] == S[j] and Q[j] != S[j]:
answers.append('present')
else:
answers.append("absent")
return answers
if __name__ == "__main__":
S = input()
Q = input()
print(*guess_word(S, Q), sep="\n")
Sasha 正在开发猜字游戏。在这个游戏中,玩家必须多次尝试猜出 N 个字母的隐藏单词。目前,萨沙面临着编写用于检查玩家尝试与隐藏词的重合值的逻辑的任务。
更正式地说,让有一个字符串 S - 隐藏的单词和一个字符串 Q - 玩家的尝试。两个字符串的长度 N 相同。对于字符串 Q 的每个位置 1 ≤ i ≤ N,您需要计算该位置与字符串 S 的匹配类型。
如果 Qi=Si,则在位置 i 匹配类型必须等于正确。
如果 Qi≠Si,但存在另一个位置 1≤j≤N 使得 Qi=Sj,则在位置 i 处必须存在匹配类型。
字符串 S 的每个字母最多可用于一次正确匹配或当前匹配。始终优先考虑正确的类型。从当前类型的所有可能用例中,Sasha 的程序选择字符串 Q 中最左边的位置。在其余位置,匹配类型必须不存在。
笔记
第一个测试用例的解释。Q1=S1 和 Q5=S5,所以对于位置 1 和 5,答案是正确的。Q3=S4,所以对于位置 3,答案是存在的。字母 L 和 A 不会出现在字符串 S 中,因此对于位置 2 和 4,答案不存在。
第二个测试用例的解释。Q1=S1 和 Q4=S4,所以对于位置 1 和 4,答案是正确的。字母 A 不再出现在字符串 S 中,因此对于位置 2 和 3,答案不存在。
第三个测试用例的解释。Q2=S2,所以对于位置 2,答案是正确的。Q1=S4,Q3=S1 和 Q4=S3,所以对于位置 1、3 和 4,答案是存在的。字母 A 出现在字符串 S 的位置 1,但它已经存在(Q3=S1),因此对于位置 5,答案不存在。
示例 1:
Ввод: Вывод:
COVER correct
CLEAR absent
present
absent
correct
示例 2:
Ввод: Вывод:
ABBA correct
AAAA absent
absent
correct
示例 3:
Ввод: Вывод:
ABCBC present
BBACA correct
present
present
absent