---
description: 換位思考真的是我缺乏的，還有要問清楚 Edge Case
---

# # 482. License Key Formatting

[LeetCode](https://leetcode.com/problems/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.

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%
```
