41 lines
573 B
Go
41 lines
573 B
Go
|
|
package main
|
||
|
|
|
||
|
|
type ListNode struct {
|
||
|
|
Val int
|
||
|
|
Next *ListNode
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
|
||
|
|
}
|
||
|
|
func isPalindrome(head *ListNode) bool {
|
||
|
|
numlist := make([]int, 0)
|
||
|
|
for head != nil {
|
||
|
|
numlist = append(numlist, head.Val)
|
||
|
|
head = head.Next
|
||
|
|
}
|
||
|
|
if len(numlist) == 1 {
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
left := len(numlist)/2 - 1
|
||
|
|
right := left + 1
|
||
|
|
if len(numlist)%2 != 0 {
|
||
|
|
left = len(numlist) / 2
|
||
|
|
right = left
|
||
|
|
} else {
|
||
|
|
left = len(numlist)/2 - 1
|
||
|
|
right = left + 1
|
||
|
|
}
|
||
|
|
|
||
|
|
for left >= 0 {
|
||
|
|
if numlist[left] == numlist[right] {
|
||
|
|
left--
|
||
|
|
right++
|
||
|
|
} else {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return true
|
||
|
|
}
|