Compare commits
2 Commits
64c805cf06
...
1d785da008
| Author | SHA1 | Date |
|---|---|---|
|
|
1d785da008 | |
|
|
51984f6f9b |
77
main.go
77
main.go
|
|
@ -2,54 +2,49 @@ package main
|
||||||
|
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
// ListNode Definition for singly-linked list.
|
func isMapEqual(a map[uint8]int, b map[uint8]int) bool {
|
||||||
type ListNode struct {
|
for k, v := range a {
|
||||||
Val int
|
if val, ok := b[k]; ok {
|
||||||
Next *ListNode
|
if val != v {
|
||||||
}
|
|
||||||
|
|
||||||
func isPalindrome(head *ListNode) bool {
|
|
||||||
srcHead := head
|
|
||||||
head = head.Next
|
|
||||||
// var left, right *ListNode
|
|
||||||
cnt := 1
|
|
||||||
for head != nil {
|
|
||||||
head = head.Next
|
|
||||||
cnt++
|
|
||||||
}
|
|
||||||
head = srcHead.Next
|
|
||||||
lastNode := srcHead
|
|
||||||
srcHead.Next = nil
|
|
||||||
half := cnt / 2
|
|
||||||
half--
|
|
||||||
for range half {
|
|
||||||
p := head.Next
|
|
||||||
head.Next = lastNode
|
|
||||||
lastNode = head
|
|
||||||
head = p
|
|
||||||
}
|
|
||||||
if cnt&1 == 1 {
|
|
||||||
head = head.Next
|
|
||||||
}
|
|
||||||
for head != nil && lastNode != nil {
|
|
||||||
if head.Val != lastNode.Val {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
head = head.Next
|
} else {
|
||||||
lastNode = lastNode.Next
|
return false
|
||||||
}
|
}
|
||||||
if head != nil || lastNode != nil {
|
}
|
||||||
|
for k, v := range b {
|
||||||
|
if val, ok := a[k]; ok {
|
||||||
|
if val != v {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
func checkStrings(s1 string, s2 string) bool {
|
||||||
|
mp1 := make(map[uint8]int)
|
||||||
|
mp2 := make(map[uint8]int)
|
||||||
|
for i := 0; i < len(s1); i += 2 {
|
||||||
|
mp1[s1[i]]++
|
||||||
|
mp2[s2[i]]++
|
||||||
|
}
|
||||||
|
if !isMapEqual(mp1, mp2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
mp1 = make(map[uint8]int)
|
||||||
|
mp2 = make(map[uint8]int)
|
||||||
|
for i := 1; i < len(s1); i += 2 {
|
||||||
|
mp1[s1[i]]++
|
||||||
|
mp2[s2[i]]++
|
||||||
|
}
|
||||||
|
if !isMapEqual(mp1, mp2) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
isPalindrome := isPalindrome(&ListNode{
|
fmt.Printf("%v", checkStrings("abcdba", "cabdab"))
|
||||||
Val: 1,
|
|
||||||
Next: &ListNode{
|
|
||||||
Val: 2,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
fmt.Printf("isPalindrome: %v\n", isPalindrome)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue