题解 | #判断一个链表是否为回文结构#
判断一个链表是否为回文结构
https://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类 the head
* @return bool布尔型
*/
func isPail( head *ListNode ) bool {
// write code here
if head==nil|| head.Next==nil{
return true
}
var left,mid,fast *ListNode
mid=head
fast=head
for fast!=nil&&fast.Next!=nil{ //找中点
left=mid
mid=mid.Next
fast=fast.Next.Next
}
left.Next=nil
r:=reverse(mid) //反转后半段链表
for head!=nil{ //对比
if head.Val!=r.Val{
return false
}
head=head.Next
r=r.Next
}
return true
}
func reverse(p *ListNode)*ListNode{ //
var pre,cur *ListNode
for p!=nil{
cur=p
p=p.Next
cur.Next=pre
pre=cur
}
return pre
}

查看17道真题和解析