领扣LintCode算法问题答案-1214. 许可证密钥格式
领扣LintCode算法问题答案-1214. 许可证密钥格式目录1214. 许可证密钥格式描述样例 1:样例 2:题解鸣谢1214. 许可证密钥格式描述给定一个用字符串S表示的许可证,其中仅仅包含了数字、字母和短横线。字符串被N个短横线“-”切分为了N+1组。给定一个数字K,要求重新整理字符串的格式,使得除了第一组之外的每个组正好K个字符,第一组长度可以比K小,但也至少要包含一个字符。此外,对于两
·
领扣LintCode算法问题答案-1214. 许可证密钥格式
1214. 许可证密钥格式
描述
给定一个用字符串S表示的许可证,其中仅仅包含了数字、字母和短横线。字符串被N个短横线“-”切分为了N+1组。
给定一个数字K,要求重新整理字符串的格式,使得除了第一组之外的每个组正好K个字符,第一组长度可以比K小,但也至少要包含一个字符。此外,对于两个组之间必须要插入一个短横线,所有的小写字母都要转换为大写字母。
- 字符串S的长度不会超过12000,而且K是一个正整数。
- 字符串S仅仅包含大小写字母、数字和短横线“-”。
- 字符串S非空。
样例 1:
输入: S = "5F3Z-2e-9-w", K = 4
输出: "5F3Z-2E9W"
解释: 字符串S切分为两个部分, 每个部分有4个字符。
注意原串中两个额外的横线是多余的,可以删掉。
样例 2:
输入: S = "2-5g-3-J", K = 2
输出: "2-5G-3J"
解释: 字符串S切分为了三部分, 每个部分有两个字符,除了第一个部分,因为如原题所述,第一部分长度只有1。
题解
public class Solution {
/**
* @param S: a string
* @param K: a integer
* @return: return a string
*/
public String licenseKeyFormatting(String S, int K) {
// write your code here
StringBuilder sb = new StringBuilder();
int length = 0;
for (int i = S.length() - 1; i >= 0; i--) {
char c = S.charAt(i);
if (c != '-') {
if (length >= K) {
sb.append("-");
length = 0;
}
sb.append(Character.toUpperCase(c));
length++;
}
}
return sb.reverse().toString();
}
}
鸣谢
非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。
更多推荐
已为社区贡献1条内容
所有评论(0)