package main import ( "fmt" "strconv" "strings" ) //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 } } for i := 0; i < len(s1); i++ { if s1[i] != s2[len(s2)-1-i] { return 0 } } return int(ans) } //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) }