思路:
去横杠
转大写
加入头部
遍历加入剩余项和横杠
注意点:
加入头部时判断字符串长度是否小于于k,决定是否加入横杠
遍历时最后一项不用加横杠
var licenseKeyFormatting = function(s, k) {
let newS=s.replace(/-/g,'')
function replaceStr(str){
let strArr=[...str]
for(let i=0;i<strArr.length;i++){
let asciiCode=strArr[i].charCodeAt(0)
if(asciiCode>=97 && asciiCode<=122){
strArr[i]=String.fromCharCode(asciiCode-32)
}
}
return strArr.join('')
}
newS=replaceStr(newS)
let result=''
let headNum=newS.length%k
headNum!==0?
(newS.length<=k?result+=newS.slice(0,headNum):result+=newS.slice(0,headNum)+'-')
:''
for(let i=headNum+k;i<=newS.length;i+=k){
result+=newS.slice(i-k,i)
i!==newS.length?result+='-':''
}
return result
};
时间复杂度:O(n),n为字符串长度
空间复杂度:O(1),用到了额外常数个变量