HackerRank《Game of Thrones》算法题求助:逻辑错误仅过10/21测试用例
HackerRank《Game of Thrones》算法题错误排查
你的代码逻辑核心错误在于:回文串的判断依据是「出现次数为奇数的字母总数」,而非「出现次数恰好为1的字母数」。
举个例子:字符串"aaabbb"中,a出现3次、b出现3次,都是奇数次数,这类字符串无法构成回文,但你的代码会因为统计到0个次数为1的字母,错误返回YES;再比如字符串"aaaaa",a出现5次(奇数),你的代码统计次数为1的字母数是0,会正确返回YES——这说明你的逻辑只覆盖了部分场景,漏掉了次数为3、5等其他奇数的情况。
看你的代码细节:
- 遍历字母次数时,你只计数
key ==1的情况,完全忽略了3、5等其他奇数次数的字母,这才是导致大部分测试用例失败的核心原因。
修正后的思路:统计每个字母的出现次数,然后数其中奇数次数的字母数量,若该数量≤1则返回YES,否则返回NO。
修正后的Python代码:
def gameOfThrones(s): alpha_count = {} for char in s: alpha_count[char] = alpha_count.get(char, 0) + 1 odd_counter = 0 for count in alpha_count.values(): if count % 2 != 0: odd_counter += 1 return 'YES' if odd_counter <= 1 else 'NO'
额外补充:你预先创建包含所有26个字母的字典其实没必要,直接统计字符串中实际出现的字母即可,这样更高效,但这不是影响测试用例通过的核心问题。
内容的提问来源于stack exchange,提问作者Shivam Tawari
相关产品推荐
相关产品推荐

