482.密钥格式化

46 阅读1分钟

题目:
给定一个许可密钥字符串 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
}