meta data for this page
  •  

License Key Formatting

Leetcode


You are given a license key represented as a string s that consists of only alphanumeric characters and dashes. The string is separated into n + 1 groups by n dashes. You are also given an integer k.

We want to reformat the string s 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 you should convert all lowercase letters to uppercase.

Return the reformatted license key.

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.

Solution 1

Solution 1

public String licenseKeyFormatting(String S, int K) {
  char[] chars = S.toCharArray();
  StringBuilder sb = new StringBuilder();
 
  int counter = 0;
  for (int i = chars.length - 1; i >= 0; i--) {
    if(chars[i] == '-') {
      continue;
    }
    if (counter++ == K && i >= 0) {
      sb.append('-');
      counter = 1;
    }
    sb.append(chars[i]);
  }
  return sb.reverse().toString().toUpperCase();
}