iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
自我挑戰組

30天刷題大挑戰系列 第 15

第 14 天 不斷嘗試直到成功( leetcode 017 )

JavaScript 解答

var letterCombinations = function (digits) {

    if (!digits.length) return [];

    var ans = [''];
    var map = ['0', '1', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'];

    for (var i = 0; i < digits.length; i++) {
        var str = map[digits[i]];
        var tmp = [];
        for (var j = 0; j < ans.length; j++) {
            var t = ans[j];
            for (var k = 0; k < str.length; k++) {
                tmp.push(t + str[k]);
            }
        }
        ans = tmp;
    }

    return ans;
};

Ruby 解答

def letter_combinations(digits)
  set=%w[abc def ghi jkl mno pqrs tuv wxyz]
  hash={}
  set.each_with_index { |chs, i| hash[(i+2).to_s]=chs }
  return [] if digits.length<1
  letter_combination_helper(hash, digits)
end

def letter_combination_helper(hash, digits)
  return hash[digits[0]].chars if digits.length==1
  pre=letter_combination_helper(hash, digits[0...-1])
  res=[]
  hash[digits[-1]].chars.each do |ch|
    pre.each { |st| res<<st+ch }
  end
  res
end

上一篇
第 13 天 堅持刷題持續進步( leetcode 016 )
下一篇
第 15 天 有甚麼事先練再說( leetcode 019 )
系列文
30天刷題大挑戰16

尚未有邦友留言

立即登入留言