题解 | #牛群编号的回文顺序# java
牛群编号的回文顺序
https://www.nowcoder.com/practice/e41428c80d48458fac60a35de44ec528
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return bool布尔型
*/
public boolean isPalindrome (ListNode head) {
// write code here
List<Integer> vals = new ArrayList<>();
while (head != null) {
vals.add(head.val);
head = head.next;
}
int i = 0, j = vals.size() - 1;
while (i < j) {
if (!vals.get(i).equals(vals.get(j))) {
return false;
}
i++;
j--;
}
return true;
}
}
这道题主要考察的是判断一个链表是否回文的能力。
- 首先定义了一个链表节点类
ListNode,包含一个整数类型的值val和一个指向下一个节点的指针next。 - 在
Solution类中,定义了一个方法isPalindrome用于判断链表是否回文。 isPalindrome方法中首先创建了一个列表vals,用于存储链表节点的值。- 然后通过遍历链表,将每个节点的值添加到
vals列表中。 - 接着,使用两个指针
i和j来分别指向vals列表的开头和结尾。 - 当
i小于j时,比较vals列表中i和j位置上的值是否相等。如果不相等,则说明链表不是回文,返回false。 - 如果
vals列表中所有的值都通过比较,没有找到不相等的情况,说明链表是回文,返回true。
通过将链表的值存储在列表中,然后使用双指针法来进行回文判断。

