免费建材网站模板,做网站一般多少钱,山东网站建设网络公司,腾讯军事482. 密钥格式化
有一个密钥字符串 S #xff0c;只包含字母#xff0c;数字以及 ‘-’#xff08;破折号#xff09;。其中#xff0c; N 个 ‘-’ 将字符串分成了 N1 组。
给你一个数字 K#xff0c;请你重新格式化字符串#xff0c;使每个分组恰好包含 K 个字符。特…482. 密钥格式化
有一个密钥字符串 S 只包含字母数字以及 ‘-’破折号。其中 N 个 ‘-’ 将字符串分成了 N1 组。
给你一个数字 K请你重新格式化字符串使每个分组恰好包含 K 个字符。特别地第一个分组包含的字符个数必须小于等于 K但至少要包含 1 个字符。两个分组之间需要用 ‘-’破折号隔开并且将所有的小写字母转换为大写字母。
给定非空字符串 S 和数字 K按照上面描述的规则进行格式化。
示例 1输入S 5F3Z-2e-9-w, K 4
输出5F3Z-2E9W
解释字符串 S 被分成了两个部分每部分 4 个字符注意两个额外的破折号需要删掉。
示例 2输入S 2-5g-3-J, K 2
输出2-5G-3J
解释字符串 S 被分成了 3 个部分按照前面的规则描述第一部分的字符可以少于给定的数量其余部分皆为 2 个字符。提示:
S 的长度可能很长请按需分配大小。K 为正整数。S 只包含字母数字a-zA-Z0-9以及破折号’-’S 非空
解题思路
从后向前遍历,统计每k个字符为一组并且将小写字母转换为大写然后在每一组的分隔里面加入-,最后一组不加入分隔符-。
代码
class Solution {public String licenseKeyFormatting(String s, int k) {int n s.length();StringBuilder sb new StringBuilder();for (int i n-1,cnt0; i 0; i--) {if(s.charAt(i)-) continue;sb.append(Character.toUpperCase(s.charAt(i)));cnt;if(cntki!0){cnt0;sb.append(-);}}if (sb.length()0sb.charAt(sb.length()-1)-)sb.deleteCharAt(sb.length()-1);return sb.reverse().toString();}
}