判断链表是否为回文结构(思路清晰)
判断一个链表是否为回文结构
http://www.nowcoder.com/questionTerminal/3fed228444e740c8be66232ce8b87c2f
思路:
构造一个栈,第一步,从头遍历链表,把值存进栈里面(顺便引入一个i值,记录有几个数,可以用来找出第几个是中间值)。第二步,只需遍历一半栈和链表,for循环挨个对比,如果不一样则返回false,最后在循环外面返回ture!搞定!
public class Solution { //
public boolean isPail (ListNode head) {
Stack<Integer> s= new Stack<>();
int i=0;
ListNode tmp =head;//需要一个辅助指针
while(head!=null){//从头开始入栈
s.push(head.val);
i++;
head=head.next;
}
int mid=i/2;
for(int j=0; j < mid; j++){//只需遍历一半
if(tmp.val!=s.pop()){
return false;
}
tmp = tmp.next;
}
return true;
}
}
