赎金信

给定一个许可密钥字符串 s,仅由字母、数字字符和破折号组成。字符串由 n 个破折号分成 n + 1 组。你也会得到一个整数 k 。
我们想要重新格式化字符串 s,使每一组包含 k 个字符,除了第一组,它可以比 k 短,但仍然必须包含至少一个字符。此外,两组之间必须插入破折号,并且应该将所有小写字母转换为大写字母。
返回 重新格式化的许可密钥 。

  • 输入:S = “5F3Z-2e-9-w”, k = 4
  • 输出:”5F3Z-2E9W”
  • 解释:字符串 S 被分成了两个部分,每部分 4 个字符;
    注意,两个额外的破折号需要删掉。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let licenseKeyFormatting = function(s, k) {
const ans = [];
let cnt = 0;

for (let i = s.length - 1; i >= 0; i--) {
if (s[i] !== '-') {
cnt++;
ans.push(s[i].toUpperCase());
if (cnt % k === 0) {
ans.push("-");
}
}
}
if (ans.length > 0 && ans[ans.length - 1] === '-') {
ans.pop();
}

return ans.reverse().join('');
};