题目地址:
https://www.lintcode.com/problem/1214/
给定一个长
n
n
n的字符串
s
s
s,其含数字字母和'-'
。再给定一个正整数
k
k
k,要求将
s
s
s从后向前
k
k
k个
k
k
k个分组(略过
s
s
s中的'-'
),组与组之间用'-'
分隔。返回得到的字符串。
代码如下:
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();
for (int i = S.length() - 1, j = 0; i >= 0; i--) {
char ch = S.charAt(i);
if (ch != '-') {
sb.append(Character.toUpperCase(ch));
j++;
}
if (j == K) {
sb.append('-');
j = 0;
}
}
if (sb.charAt(sb.length() - 1) == '-') {
sb.setLength(sb.length() - 1);
}
return sb.reverse().toString();
}
}
时空复杂度 O ( n ) O(n) O(n)。