Вот тот, который использует только 2 StringBuilders вместо 3 и не использует встроенный обратный метод.Вместо этого цикл while проходит через связанный список, добавляет текущий узел в original
StringBuilder и вставляет текущий узел в начало reversed
StringBuilder.Таким образом, встроенный метод вставки помогает изменить порядок значений узлов:
public boolean isPalindrome(ListNode head) {
StringBuilder original = new StringBuilder(), reversed = new StringBuilder();
ListNode curr = head;
while (curr != null) {
original.append(curr.val);
reversed.insert(0, curr.val);
curr = curr.next;
}
return original.toString().equals(reversed.toString()) ? true : false;
}