关于leetcode:LeetCode-每日-2022-02-16

40次阅读

共计 1258 个字符,预计需要花费 4 分钟才能阅读完成。

赎金信

  • 哈希映射

    建设一个哈希表 lettersPool, 用于寄存 magazine 中呈现的 字母 以及 对应数量

    /**
     * @param {string} ransomNote
     * @param {string} magazine
     * @return {boolean}
     */
    var canConstruct = function(ransomNote, magazine) {const lettersPool = new Map();
        
        for(let letter of magazine) {if(lettersPool.has(letter)) {lettersPool.set(letter, lettersPool.get(letter) + 1);
            } else {lettersPool.set(letter, 1);
            }
        }
    
        for(let letter of ransomNote) {if(lettersPool.has(letter)) {const rest = lettersPool.get(letter);
    
                if(rest === 0) return false;
    
                lettersPool.set(letter, lettersPool.get(letter) - 1);
            } else {return false;}
        }
        
        return true;
    };

无效的字母异位词

  • 排序比拟

    /**
     * @param {string} s
     * @param {string} t
     * @return {boolean}
     */
    var isAnagram = function(s, t) {if(s.length !== t.length) return false;
    
              const lettersOfS = s.split('').sort();
              const lettersOfT = t.split('').sort();
    
              for(let i = 0; i < lettersOfS.length; i++) {if(lettersOfS[i] !== lettersOfT[i]) return false;
              }
    
              return true;
            };
  • 哈希映射

    这种办法我的以往题解写的比拟多, 这里就不再写了.

将字符串拆分为若干长度为 k 的组

  • 模仿

    简略模仿操作

    /**
     * @param {string} s
     * @param {number} k
     * @param {character} fill
     * @return {string[]}
     */
    var divideString = function(s, k, fill) {const result = [];
              const fillNumber = k - s.length % k;
    
              for(let i = k; i <= s.length; i += k) {result.push(s.slice(i - k, i));
              }
    
              if(fillNumber !== 0 && fillNumber !== k) result.push(s.slice(s.length - s.length % k) + Array(fillNumber).fill(fill).join(''));
    
              return result;
            };

小结

  • 呈现次数之类的题能够用哈希表来搞定
  • 字符串和数组之间的关系非常严密, 在须要时能够互相转化.

正文完
 0