【问题标题】:Codechef:Piece of Cake(Problem Code: LCH15JAB)Codechef:小菜一碟(问题代码:LCH15JAB)
【发布时间】:2021-01-01 12:41:22
【问题描述】:

给你一个字符串。你的任务是确定是否有 字符串中某个字符的出现次数等于 字符串中其他字符的出现次数。

输入

输入的第一行包含一个整数 T 表示数字 的测试用例。接下来的 T 行中的每一行都包含一个字符串 S 由小写拉丁字母组成。

输出

对于每个测试用例,如果 字符串满足上面给出的条件,否则为“NO”。

例子

输入:

4
acab
zzqzqq
abc
kklkwwww

输出:

YES
YES
NO
YES

我的代码:

testcases = int(input())
for i in range(testcases):
    string = list(input())
    x = len(string)
    y = max(string,key=string.count)
    z = string.count(y)
    if z==1:
        print('NO')
    elif x/z==2:
        print('YES')
    else:
        print('NO')
        

在我提交此代码后,Codechef 给了我错误的答案。谁能告诉我为什么?

【问题讨论】:

  • 给定示例输入时,您的代码输出什么?
  • 这个问题对我来说似乎措辞模棱两可,因为其他字符的出现次数可能意味着所有其他字符或某些字符。在后一种情况下,“zzqzqqfsf”也应该返回“YES”(忽略“f”和“s”)。
  • 我的代码适用于所有示例测试用例。并且字符串 zzqzqqfsf 应该根据给定的问题约束返回 NO。由于字符串 abc 也将结果作为 NO。
  • 我相信您只需要检查 x == 2*z 或 x//z == 2 而不是 x/z "/" 给出浮点数。
  • "ab" 将给出结果“NO”,因为您检查了“z == 1”,但如果“其他字符”被允许为单个字符,则应该是“YES”。跨度>

标签: python algorithm data-structures


【解决方案1】:

由于您的第一个 if 语句,您的代码没有给出正确的结果。

根据你的代码:


if z==1:
    print('NO')

这意味着对于像ab 这样的测试用例,您的代码将在应该给出输出yes 时给出输出NO。删除此if 条件,您就可以开始了。

【讨论】:

  • 此示例与任务描述不符,任务描述显然询问单个不同字符的计数是否等于其他不同字符的计数之和。
  • עד ברקן 但问题没有提到“不同”这个词。
  • "some character" 表示单个字符。单个字符意味着不同的字符。我还没有确认,但看起来正确的答案是在comment
  • גלעד ברקן 对不起,你是对的,我更正了我的答案,刚刚看到评论答案。
猜你喜欢
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多