力扣刷题日记-2287-重排字符形成目标字符串

48 阅读1分钟
  • 给你两个下标从 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
};