天天看點

劍指Offer——把數字翻譯成字元串(JS實作)

題目描述

劍指Offer——把數字翻譯成字元串(JS實作)

解題思路

  • 本題關鍵點在于:使用遞歸的思想。
  • 考慮兩種情況:1. 單個的數字(可以翻譯) 2.連續的兩個數字組成的數字在0-25之間。(可以翻譯)
  • 遞歸的結束條件是字元串的長度達到了輸入數字的長度
  • 千言萬語其實就是下面這個圖的思想(來自于LeetCode題解: leetcode-cn.com/problems/ba…
劍指Offer——把數字翻譯成字元串(JS實作)

有時候無法了解遞歸的過程的時候,可以通過手畫下面的遞歸圖來幫助我們了解遞歸

劍指Offer——把數字翻譯成字元串(JS實作)

解題代碼

var translateNum = function(num) {
    let result = 0;
    const strLen = num.toString().length;
    num = num.toString();
    function dfs(str,pointer) {
        if (str.length === strLen) {
            result++;
            return;
        }
        if (Number(num[pointer]) * 10 + Number(num[pointer + 1]) >= 10 && Number(num[pointer]) * 10 + Number(num[pointer + 1]) < 26) {
            dfs(str + num[pointer],pointer+1);
            dfs(str + num[pointer] + num[pointer+1],pointer+2);
        } else {
            dfs(str + num[pointer],pointer+1);
        }
    }
    dfs('',0)
    return result;
};
      

總結(本題給我們的啟示思路)

  • 啟示一:學會使用遞歸求解
  • 啟示二:學會畫遞歸圖
  • 啟示三:知道每一層遞歸傳回到哪裡了,心裡要有數

繼續閱讀