思路:
去横杠
转大写
加入头部
遍历加入剩余项和横杠
注意点:
加入头部时判断字符串长度是否小于于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),用到了额外常数个变量