zoukankan      html  css  js  c++  java
  • [LeetCode 17]*的字母组合

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解答:

         1.解题思路:

        • 题目包含输入的值不是确定的位数,所以第一个反应是想到用递归。
    var letterCombinations = function (digits) {
      const map = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
      const len = digits.length
      const arr = digits.split('').map(Number)
      const result = []
      function concatStr(i,str) {
        if(i == len){
          result.push(str)
          return
        }
        const tmp = map[arr[i]]
        for(let j=0;j<tmp.length;j++){
          concatStr(i+1,str+tmp[j])
        }
      }
      concatStr(0,'')
      return result
    
    };

         2.解题思路:      

        • 这是leetcode上看到的,用reduce+map代替递归。以后碰到累加的问题可以优先考虑reduce
        • 善用for...of能减少代码           

                      

    var letterCombinations = function (digits) {
      const num2letter = {
        '2': ['a', 'b', 'c'],
        '3': ['d', 'e', 'f'],
        '4': ['g', 'h', 'i'],
        '5': ['j', 'k', 'l'],
        '6': ['m', 'n', 'o'],
        '7': ['p', 'q', 'r', 's'],
        '8': ['t', 'u', 'v'],
        '9': ['w', 'x', 'y', 'z']
      }
      //处理length<2的情况
      if (digits.length === 0) return [];
      if (digits.length === 1) return num2letter[digits]
    
      //数字对应字母数组
      let lettersArr = [];
      for (let item of digits) {
        lettersArr.push(num2letter[item])
      }
    
      //组合两个旧数组成为一个新数组,然后用这个新数组再去和下一个组合  reduce
      let res = lettersArr.reduce((pre, cur) => {
        let temp = [];
        pre.map(item => {
          cur.map(item1 => {
            temp.push(item + item1)
          })
        })
        return temp;
      })
      return res;
    };

     

  • 相关阅读:
    UIWebView的高度不对问题
    SQL --分组【Group By】
    SQL--Order By
    SQL--空值处理
    SQ--模糊查询
    SQL 聚合函数
    SQL 语句的TOP,Distinct语句
    SQL约束
    1 翻译系列:什么是Code First(EF 6 Code First 系列)
    终极版:由简单工厂模式,升级到抽象工厂模式(用到反射)
  • 原文地址:https://www.cnblogs.com/TTblog5/p/12567037.html
Copyright © 2011-2022 走看看