Files
codekata-golang/20210120/main.go
2021-01-20 08:53:49 +08:00

68 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"strconv"
"strings"
)
//给你一个字符串 s它由数字'0' - '9')和 '#' 组成。我们希望按下述规则将 s 映射为一些小写英文字符:
//
//字符('a' - 'i')分别用('1' - '9')表示。
//字符('j' - 'z')分别用('10#' - '26#')表示。
//返回映射之后形成的新字符串。
//
//题目数据保证映射始终唯一。
//
//
//
//示例 1
//
//输入s = "10#11#12"
//输出:"jkab"
//解释:"j" -> "10#" , "k" -> "11#" , "a" -> "1" , "b" -> "2".
//示例 2
//
//输入s = "1326#"
//输出:"acz"
//示例 3
//
//输入s = "25#"
//输出:"y"
//示例 4
//
//输入s = "12345678910#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#"
//输出:"abcdefghijklmnopqrstuvwxyz"
//
//
//提示:
//
//1 <= s.length <= 1000
//s[i] 只包含数字('0'-'9')和 '#' 字符。
//s 是映射始终存在的有效字符串。
func main() {
}
func freqAlphabet(s string) string {
var ret []uint8
for i := len(s) - 1; i >= 0; i-- {
sb := strings.Builder{}
sn := s[i]
if sn == '#' {
i -= 2
sb.WriteByte(s[i])
sb.WriteByte(s[i+1])
ret = append([]uint8{toChar(sb.String())}, ret...)
} else {
ret = append([]uint8{toChar(string(s[i]))}, ret...)
}
}
return string(ret)
}
func toChar(c string) uint8 {
i, _ := strconv.Atoi(c)
return 'a' + uint8(i) - 1
}