Skip to main content

BM13 判断一个链表是否为回文结构

描述

给定一个链表,请判断该链表是否为回文结构。回文是指该字符串正序逆序完全一致。```

{2,1}
false

{1,2,2,1}
true

题解

使用快慢指针

package main

import (
. "nc_tools"
)

/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/

/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类 the head
* @return bool布尔型
*/
func isPail(head *ListNode) bool {
if head == nil||head.Next==nil{
return true
}
var slow,fast,nowNode *ListNode
nowNode=head
slow=head
fast=head.Next
for fast!=nil&&fast.Next!=nil{
slow=slow.Next
fast=fast.Next.Next
}
resHead:=reserve(slow.Next)
for resHead.Next!=nil{
if nowNode.Val!=resHead.Val{
return false
}
nowNode=nowNode.Next
resHead=resHead.Next
}
return true
}
func reserve(head *ListNode) *ListNode {
var per, now, next *ListNode
now = head
next = head
for now != nil {
next = now.Next
now.Next = per
per = now
now = next
}
return per
}

ad.union.anti_site_api, ad.antispam.wuguanhao