# 482. License Key Formatting

換位思考真的是我缺乏的,還有要問清楚 Edge Case

LeetCode

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.

input: {string} S 由[0-9a-zA-A-] 組成  / {Number} K
output: 轉換過的字

output

基本分兩組由 - 分開

  • 第一組: length >=1 、

  • 第二組以後就是照 K 的長度組成

  • 其他: 小寫轉大小

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.

/**
 * @param {string} S
 * @param {number} K
 * @return {string}
 */
var licenseKeyFormatting = function(S, K) {
    
};

Edge Case

  • k < 0

  • S = ""

  • 後面 group “一定要除的盡”

如何解?

所以基本上應該是要算後面,因為後面長度一定要等於 K,剩下再放到第一組就好

var licenseKeyFormatting = function(S, K) {
    let newStr = S.replace(/-/g, '').toUpperCase()
    let arr = newStr.split('')

    for(let i=newStr.length - 1 -K; i>= 0; i-=K){
      arr[i] = arr[i] + '-'
    }
    
    return arr.join('')
    // return result.split('').reverse().join('')
};


console.log(licenseKeyFormatting("---a-a-a-a---", 2))
// fasren 99%

Last updated