题目:
给定一个许可密钥字符串 s,仅由字母、数字字符和破折号组成。字符串由 n 个破折号分成 n + 1 组。你也会得到一个整数 k 。
我们想要重新格式化字符串 s,使每一组包含 k 个字符,除了第一组,它可以比 k 短,但仍然必须包含至少一个字符。此外,两组之间必须插入破折号,并且应该将所有小写字母转换为大写字母。
返回 重新格式化的许可密钥 。
算法:
func licenseKeyFormatting(s string, k int) string {
str := ""
alphaCnt := 0
for i := len(s) - 1; i >= 0; i -- {
if s[i] == '-' {
continue
}
if alphaCnt > 0 && alphaCnt % k == 0{
str = "-" + str
}
if ('a' <= s[i] && s[i] <= 'z' )|| ('A' <= s[i] && s[i] <= 'Z') {
if 'a' <= s[i] && s[i] <= 'z' {
str = string(s[i] + 'A' - 'a') + str
} else {
str = string(s[i]) + str
}
} else {
str = string(s[i]) + str
}
alphaCnt ++
}
return str
}