2840. 判断通过操作能否让字符串相等 II

This commit is contained in:
li_chx 2026-03-30 08:40:34 +08:00
parent 51984f6f9b
commit 1d785da008
Signed by: li_chx
GPG Key ID: C7CF27EFA1E58BAC
1 changed files with 39 additions and 80 deletions

119
main.go
View File

@ -1,91 +1,50 @@
package main
import (
"fmt"
"strconv"
"strings"
)
import "fmt"
//type Test interface {
//}
//
//func condTest(cond *sync.Cond) {
// cond.L.Lock()
// cond.Wait()
// fmt.Println("condTest")
// cond.L.Unlock()
//}
//func chanTest(ch chan<- *Test) {
//
//}
func reverse(x int) int {
neg := false
if x < 0 {
neg = true
x = -x
}
s := fmt.Sprintf("%d", x)
var sb strings.Builder
for i := len(s) - 1; i >= 0; i-- {
sb.WriteByte(s[i])
}
s = sb.String()
var ans int32 = 0
for c := range s {
t, _ := strconv.ParseUint(string(s[c]), 10, 16)
ans = ans*10 + int32(t)
}
if neg {
ans = -ans
x = -x
}
s1, s2 := fmt.Sprintf("%d", x), fmt.Sprintf("%d", ans)
if neg {
s1 = s1[1:]
s2 = s2[1:]
}
if len(s1) != len(s2) {
for len(s2) < len(s1) {
s2 = "0" + s2
func isMapEqual(a map[uint8]int, b map[uint8]int) bool {
for k, v := range a {
if val, ok := b[k]; ok {
if val != v {
return false
}
} else {
return false
}
}
for i := 0; i < len(s1); i++ {
if s1[i] != s2[len(s2)-1-i] {
return 0
for k, v := range b {
if val, ok := a[k]; ok {
if val != v {
return false
}
} else {
return false
}
}
return int(ans)
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 true
}
//9646324351
//2147483648
func main() {
fmt.Println(reverse(1534236469))
//var x int = 16
//var y any = x
//if _, ok := y.(int); ok {
// fmt.Println(x)
//}
//if _, ok := y.(int32); ok {
// fmt.Println(x)
//}
//var mu sync.Mutex
//sync.NewCond(&mu)
//make(chan *Test, 6)
//var wg sync.WaitGroup
//wg.Add(1)
//wg.Done()
//var mu sync.Mutex
//cond := sync.NewCond(&mu)
//
//go condTest(cond)
//go condTest(cond)
//
//time.Sleep(time.Second * 2)
//cond.L.Lock()
//cond.Broadcast()
//cond.L.Unlock()
//time.Sleep(time.Second * 2)
fmt.Printf("%v", checkStrings("abcdba", "cabdab"))
}