难度:中等
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是”bccfi”, “bwfi”, “bczi”, “mcfi”和”mzi”
提示:
0 <= num < 231
方法一:截取字符比较法(从左到右循环)
/*** @param {number} num* @return {number}*/var translateNum = function(num) {let a = 1;let b = 1;let s = String(num)for(let i = 2;i<=s.length;i++){let tmp = s.substring(i-2,i)let c = (tmp.localeCompare('10')>0||tmp.localeCompare('10')==0)&&(tmp.localeCompare('25')<0||tmp.localeCompare('25')==0)?a+b:ba = bb = c}return b};
方法二:截取数字比较法(除余的方法截取数字,从右到左循环)
/*** @param {number} num* @return {number}*/var translateNum = function(num) {let a = 1;let b = 1;let x = num%10;let y = num%10;while(num!=0){num = parseInt(num/10)x = num%10let tmp = x*10+ylet c = 0if(tmp>=10&&tmp<=25){c=a+b}else{c = a}b = a;a = c;y = x;}return a;};
tips:
