利用StringBuilder构建格式化密钥,因为要求密钥第一组为小于 要求 大小k的组,那么采取倒叙处理最后再反转字符串的方法求解。Character.toUpperCase© 方法处理小写字母。
解答W了两次
第一次 "---" 3 反思:sb.deleteCharAt(sb.length()-1); 之前一定要判sb.length()-1>=0,否则会越界 第二次 "--a-a-a-a--" 2 没有考虑到“a---”的情况,最后要用一个循环删除最后的“--”
执行用时:9 ms, 在所有 Java 提交中击败了85.93%的用户
内存消耗:38.5 MB, 在所有 Java 提交中击败了61.20%的用户
class Solution {
public String licenseKeyFormatting(String s, int k) {
StringBuilder sb = new StringBuilder();
int cNum = 0;
int tonum = 0;
for(int i = s.length()-1;i>=0;i--){
char c = s.charAt(i);
if(c!='-'){
if(c>='a'||c<='z'){
sb.append(Character.toUpperCase(c));
}else{
sb.append(c);
}
cNum++;
}
if(cNum%k==0&&i!=0&&cNum+toNum!=(cNum/k+cNum)){
sb.append('-');
toNum++;
}
}
while(sb.length()-1>=0&&sb.toString().charAt(sb.length()-1)=='-'){
sb.deleteCharAt(sb.length()-1);
}
return sb.reverse().toString();
}
}



