| 123456789101112131415161718192021222324252627282930313233343536 |
- package main
- import "math"
- func getHappyString(n int, k int) string {
- bt := int(math.Pow(2.0, float64(n-1)))
- maxK := 3 * bt
- if k > maxK {
- return ""
- }
- slice := []byte{'a', 'b', 'c'}
- sl := [][]byte{{'b', 'c'}, {'a', 'c'}, {'a', 'b'}}
- res := make([]byte, 0, n)
- if k <= bt {
- res = append(res, slice[0])
- bt = 0
- } else if k > bt && k <= 2*bt {
- res = append(res, slice[1])
- } else {
- res = append(res, slice[2])
- bt *= 2
- }
- for i := 1; i < n; i++ {
- temp := res[i-1]
- i1 := int(temp - 'a')
- bti := int(math.Pow(2.0, float64(n-i-1)))
- if k <= bt+bti {
- res = append(res, sl[i1][0])
- } else {
- res = append(res, sl[i1][1])
- bt += bti
- }
- }
- return string(res)
- }
|