Мой код Python не удовлетворяет всем тестовым случаям, хотя мои логики c верны - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь написать код Python для решения проблемы: выполните приведенную ниже функцию gameOfThrones, чтобы определить, можно ли переставить данную строку в палиндром. Если это возможно, верните YES, в противном случае верните NO.

Мой лог c таков, что если входная строка имеет четную длину, то все количество символов в строке должно быть четным. Однако, если строка имеет нечетную длину, все символы должны иметь четное количество символов, кроме одного символа, имеющего нечетное число.

Код, который я написал ниже:

 def gameOfThrones(s):

    d = {}

    s = sorted(s)
    count = 0
    for i in s:
        if i not in d:
            d[i] = 1
        else:
            d[i] += 1

    if len(s) % 2 == 0:
        for v in d.values():
            if v % 2 != 0:
                print("NO")
            else:
                print("YES")
    else:
        for v in d.values():
            if v % 2 == 1:
                count += 1
        if count > 1:
            print("NO")
        elif count == 1:
            print("YES")

Я не уверен, где я ошибся. Код, кажется, имеет смысл для меня. Пожалуйста, помогите, спасибо заранее.

1 Ответ

0 голосов
/ 18 апреля 2020

Я пытаюсь запустить ваш код с 2 тестами следующим образом:

def gameOfThrones(s):
    d = {}
    s = sorted(s)
    count = 0
    for i in s:
        if i not in d:
            d[i] = 1
        else:
            d[i] += 1

    if len(s) % 2 == 0:
        for v in d.values():
            if v % 2 != 0:
                print("NO")
            else:
                print("YES")
    else:
        for v in d.values():
            if v % 2 == 1:
                count += 1
        if count > 1:
            print("NO")
        elif count == 1:
            print("YES")


gameOfThrones("aabb")
gameOfThrones("aabbbccc")

# output
YES
YES
NO
NO
YES

Как видите, ваш код выдает 5 ответов для 2 тестов.

2 проблемы в коде: не ломается после нахождения символа нечетного числа для четной длины s и печатает слишком много «YES» при нахождении символа четного числа в четной длине s

if len(s) % 2 == 0:
    for v in d.values():
        if v % 2 != 0:
            print("NO")  // break
        else:
            print("YES")  // incorrect logic
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...