题目
请判断一个链表是否为回文链表。
思路:遍历链表,把链表的val值放到list中。然后用双指针判断是否回文,一旦有一个对称位置不相等,我们就认为不是回文链表。如果循环结束了,说明是回文链表,返回true。
public boolean isPalindrome(ListNode head) {
// 创建Arraylist存储链表数据
List<Integer> list = new ArrayList<>();
// 遍历列表
while(head!=null){
list.add(head.val);
head = head.next;
}
// 头尾指针
int left = 0;
int right = list.size()-1;
// 循环条件 右指针大于左指针
while(right >left){
// 最外层回文,往里判断
if (list.get(right).equals(list.get(left))){
right--;
left++;
}else {
// 如果某一部分不回文,整个链表都不回文,返回false
return false;
}
}
// 循环结束,说明回文,返回true
return true;
}