题目名称:回文链表
难度级别:简单
题目类别:链表
题目描述:
解题思路:
回文比较方法要么从中间往两边散开比较,要么从两头往中间比较
鉴于链表不好将一头一尾数据比较,所以增加一些开销(在数据中比较),赢得一些便利
这里是使用的是两头向中间一一比较的方法
示例代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public boolean isPalindrome(ListNode head) {
//将链表中的数复制到数组中,在数组中比较会比较方便
List<Integer> value = new ArrayList<Integer>();
ListNode pre = head;
int back = 0, front = 0;
while(pre != null)
{
back ++;
value.add(pre.val);
pre = pre.next;
}
back --;
//将数组最后一个元素与链表第一个元素比较,数组倒数第二个与链表第二个元素比较,以此类推
while(front < back)
{
if(!value.get(front).equals(value.get(back)))
return false;
back --;
front ++;
}
return true;
}
}