[leetcode]鍵フォーマット[javascript]
2019年2月18日鍵フォーマット
https://leetcode-cn.com/problems/license-key-formatting/
説明
鍵文字列Sを指定します.文字、数字、および「-」だけが含まれます.N個の‘-’は文字列をN+1グループに分けた.数値Kを指定して、文字列を再フォーマットします.最初のグループ以外に、各グループはK文字を含み、最初のグループは少なくとも1文字を含みます.二つのグループの間は「-」で区切られ、すべての小文字を大文字に変換します.空でない文字列Sと数字Kを指定して、上記の規則に従ってフォーマットします.
例1: Sの長さは12,000を超えず、Kは正の整数 である. Sは、アルファベットの数字(a−z、A−Z、0−9)と、ダッシュ記号'-' だけを含む. S非空 分析
まず中スライドをフィルタして、大文字にします.最初の特殊処理を、残りはK値sliceによって中ラインを追加すればいいです.
https://leetcode-cn.com/problems/license-key-formatting/
説明
鍵文字列Sを指定します.文字、数字、および「-」だけが含まれます.N個の‘-’は文字列をN+1グループに分けた.数値Kを指定して、文字列を再フォーマットします.最初のグループ以外に、各グループはK文字を含み、最初のグループは少なくとも1文字を含みます.二つのグループの間は「-」で区切られ、すべての小文字を大文字に変換します.空でない文字列Sと数字Kを指定して、上記の規則に従ってフォーマットします.
例1:
:S = "5F3Z-2e-9-w", K = 4
:"5F3Z-2E9W"
: S , 4 ;
, 。
例2: :S = "2-5g-3-J", K = 2
:"2-5G-3J"
: S 3 , , , 2 。
ヒント:まず中スライドをフィルタして、大文字にします.最初の特殊処理を、残りはK値sliceによって中ラインを追加すればいいです.
/**
* @param {string} S
* @param {number} K
* @return {string}
*/
var licenseKeyFormatting = function(S, K) {
S = S.replace(/-/g, '').toUpperCase()
let len = S.length
let first = len % K, parts = first ? parseInt(len / K) + 1 : parseInt(len / K), res = ''
for (let i = 0; i < parts; i++) {
if (i === 0) {
res += first ? S.slice(0, first) : S.slice(0, K)
} else {
res += first ? S.slice(first + K * (i - 1), first + K * i) : S.slice(K * i, K * (i + 1))
}
if (i < parts - 1) {
res += '-'
}
}
return res
};