LeetCode License Key Formatting
You are given a license key represented as a string S which consists only alphanumeric character and dashes. The string is separated into N+1 groups by N dashes.
Given a number K, we would want to reformat the strings such that each group contains exactly K characters, except for the first group which could be shorter than K, but still must contain at least one character. Furthermore, there must be a dash inserted between two groups and all lowercase letters should be converted to uppercase.
Given a non-empty string S and a number K, format the string according to the rules described above.
Example 1:
Input: S = "5F3Z-2e-9-w", K = 4 Output: "5F3Z-2E9W" Explanation: The string S has been split into two parts, each part has 4 characters. Note that the two extra dashes are not needed and can be removed.
Example 2:
Input: S = "2-5g-3-J", K = 2 Output: "2-5G-3J" Explanation: The string S has been split into three parts, each part has 2 characters except the first part as it could be shorter as mentioned above.
Note:
- The length of string S will not exceed 12,000, and K is a positive integer.
- String S consists only of alphanumerical characters (a-z and/or A-Z and/or 0-9) and dashes(-).
- String S is non-empty.
First Attempt:
class Solution {
public String licenseKeyFormatting(String S, int K) {
if(S==null || S.length()==0){
return null;
}
String result = "";
String[] tmp = S.split("-");
String res = "";
int sum = 0;
for(int i = 0; i<tmp.length; i++){
sum = sum+ tmp[i].length();
res = res + tmp[i].toUpperCase();
}
int i = sum % K;
int k = sum/K ;
//res = res.toUpperCase();
result = result + res.substring(0,i);
if(i!=0 && k!=0){
result = result +"-";
}
String tmp_res = res.substring(i,res.length());
//System.out.println(sum + " "+ i+" c "+ tmp_res+" d "+ k);
for(int j = 1; j<= k; j++ ){
result = result + tmp_res.substring(K*(j-1), K*j);
if(j != k ){
result = result +"-";
}
// System.out.println( tmp_res.substring(K*(j-1), K*j));
}
return result;
}
}
Accepted
class Solution { public String licenseKeyFormatting(String S, int K) { if(S==null || S.length()==0){ return null; } S = S.replaceAll("[-]", ""); S = S.toUpperCase(); StringBuilder sb = new StringBuilder(); sb.append(S); int i=sb.length()-K; while(i>0) { sb.insert(i, '-'); i = i-K; } return sb.toString(); } }


浙公网安备 33010602011771号