- 给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排,得到若干新的字符串。
从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。
来源:力扣(LeetCode) 链接:leetcode.cn/problems/re… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/**
* @param {string} s
* @param {string} target
* @return {number}
*/
var rearrangeCharacters = function(s, target) {
let sArr = s.split('').filter(i => i)
let tArr = target.split('').filter(i =>i)
let map = new Map()
for(let i = 0; i < tArr.length; i++) {
let cur = tArr[i]
map.has(cur) ?
map.set(cur, map.get(cur)+1) :
map.set(cur, 1)
}
let sMap = new Map()
for(let i = 0; i < s.length; i++) {
let cur = s[i]
sMap.has(cur) ?
sMap.set(cur, sMap.get(cur)+1) :
sMap.set(cur, 1)
}
let min = Infinity
for(let [code, num] of map) {
let sNum = sMap.get(code) || 0
if(sNum == 0) {
min = 0
return min
}
let time = Math.floor(sNum / num)
min = Math.min(time,min)
}
return min
};