Tcdian / keep

今天不想做,所以才去做。
MIT License
5 stars 1 forks source link

剑指 Offer 46. 把数字翻译成字符串 #203

Open Tcdian opened 4 years ago

Tcdian commented 4 years ago

剑指 Offer 46. 把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a”1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

Example

输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"

Note

Tcdian commented 4 years ago

Solution

/**
 * @param {number} num
 * @return {number}
 */
var translateNum = function(num) {
    const str = String(num);
    const dp = new Array(str.length + 1);
    for (let i = 0; i <= str.length; i++) {
        if (i <= 1) {
            dp[i] = 1;
            continue;
        } 
        const twoDigits = Number(str.slice(i - 2, i));
        if ( twoDigits <= 25 && twoDigits > 9) {
            dp[i] = dp[i - 1] + dp[i - 2];
        } else {
            dp[i] = dp[i - 1];
        }
    }
    return dp[str.length];
};
function translateNum(num: number): number {
    const str = String(num);
    const dp: number[] = new Array(str.length + 1);
    for (let i = 0; i <= str.length; i++) {
        if (i <= 1) {
            dp[i] = 1;
            continue;
        } 
        const twoDigits = Number(str.slice(i - 2, i));
        if ( twoDigits <= 25 && twoDigits > 9) {
            dp[i] = dp[i - 1] + dp[i - 2];
        } else {
            dp[i] = dp[i - 1];
        }
    }
    return dp[str.length];
};