Палиндром Linkedlist с использованием рекурсии - PullRequest
0 голосов
/ 03 мая 2020

Индексирование начинается с 0. Формат ввода: элементы связанного списка (разделенные пробелом и оканчивающиеся на -1)

В одном скрытом тестовом примере имеется ошибка во время выполнения. main() принимает ввод и передает head.

public class Solution {
    static String s1="",s2="";
    public static boolean isPalindrome_2(LinkedListNode<Integer> head) {
        if (head != null) {
            s1 = s1 + head.data;
            isPalindrome_2(head.next);
            s2 = s2 + head.data;
        }
        if (s1.equals(s2))
            return true;
        return false;
    }
}

Как должен работать алгоритм: s1 будет хранить строку, содержащую все данные. s2 будет хранить данные в обратном порядке, так как это после рекурсивной функции. Тогда строки можно сравнить.

1 Ответ

0 голосов
/ 03 мая 2020

Поскольку вы не предоставили воспроизводимый пример, я не смог запустить ваш код и проверить любые гипотезы. Так что это только из-за проверки.

  1. Если числа в списке ар 1 и 11, это не палиндром. Тем не менее, ваша строка s1 и s2 должна стать 111, что равно, поэтому ваш метод должен вернуть true.
  2. Вы не проверяете -1 в конце. Не так ли?

Кстати, я не вижу индексации и не вижу пробелов между элементами.

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

...