Compare commits

..

2 Commits

Author SHA1 Message Date
li_chx 1d785da008
2840. 判断通过操作能否让字符串相等 II 2026-03-30 08:40:34 +08:00
li_chx 51984f6f9b
7. 整数反转 2026-03-29 21:58:42 +08:00
1 changed files with 36 additions and 41 deletions

77
main.go
View File

@ -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)
} }