每日一题——LeetCode1002

每日一题——LeetCode1002_第1张图片

方法一 个人方法:

将words里的字符串的每个字符出现的次数都转为键值对的形式:

循环求两两键值对数组的交集:

最后的交集就是重复出现的字符和次数,把键值对转回字符数组形式即可

思路对了,但是太复杂了,时间效率很低

var commonChars = function(words) {
    var arr=[],newWords=[],union=[]
    for(var item of words){
        for(var char of item){
            if(!arr[char]){
                arr[char]=1
            }else{
                arr[char]++
            }
        }
        newWords.push(arr)
        arr=[]
    }
    arr=newWords[0]
    for(var i=1;i

消耗时间和内存情况:

每日一题——LeetCode1002_第2张图片

 方法二  参考大佬的:

直接使用第一项或最后一项作为对比模板,查询相同字母
需要注意,找到一个相同字母后,需要去除这个字母,才能进行下一个字母的对比

var commonChars = function(words) {
    let father = words.pop().split("");
    return father.filter(e=>{
      let flag = words.every(item=>{
        return item.indexOf(e) > -1;
      });
      if(flag) {
        words = words.map(d=>{
          return d.replace(e,'');
        })
      }
      return flag;
    });
};

消耗时间和内存情况:

每日一题——LeetCode1002_第3张图片

你可能感兴趣的:(每日一题,javascript,算法,leetcode)