有一个密钥字符串S,只包含字母,数字以及-(破折号)。其中,N个-将字符串分 成了N+1组。 给你一个数字K,请你重新格式化字符串,使每个分组恰好包含K个字符。特别地,第一 个分组包含的字符个数必须小于等于K,但至少要包含1个字符。两个分组之间需要用 (破折号)隔开,并且将所有的小写字母转换为大写字母。 给定非空字符串S和数字K,按照上面描述的规则进行格式化。
示例1: 输入:S="5F3Z-2e-9-w",K=4 输出:"5F3Z-2E9W" 解释:字符串S被分成了两个部分,每部分4个字符;· 注意,两个额外的破折号需要删掉。· 示例2: 输入:S="2-5g3-J",K=2, 输出:"2-5G-3J"。 解释:字符串S被分成了3个部分,按照前面的规则描述,第一部分的字符可以少于给定 的数量,其余部分皆为2个字符。
var helper = (s, k) => {
s = s.toUpperCase();
//去'-'
for (let i = 0; i < s.length; i++) {
if (s.charAt(i) === '-') {
s = s.substring(0, i) + s.substring(i + 1, s.length);
}
}
let arr = [];
//第一部分
let n = s.length % k;
if (n !== 0) {
let ch = '';
for (let i = 0; i < n; i++) {
ch += s.charAt(i);
}
arr.push(ch);
}
//长度为k的重复部分
let start = n;
while (start < s.length) {
let ch = '';
for (let i = start; i < start + k; i++) {
ch += s.charAt(i);
}
arr.push(ch);
start += k;
}
return arr.join('-');
}
console.log(helper('5F3z-2e-9-w', 4));
console.log(helper('2-5g-3-J', 2));
console.log(helper('0-ahs4-8JNJ-1', 3));