題目:給定一個數字,我們按照如下的規則把它翻譯爲字符串:將 0-25 分別對應翻譯到 a-z 字符,如 0 翻譯成 a,以此類推。一個數字可能有多少種翻譯。例如,12258 有 5 種不同的翻譯,分別是 “bccfi”、”bwfi”、”bczi”、”mcfi”、”mzi”。請編程實現一個函數,用來計算一個數字有多少種不同的翻譯方法。
思路:遞歸尋找,從後往前,尋找規律
const getStringNum = n => {
if(typeof n !== 'number' || n<0)return false;
let number = n.toString();
let res = new Array(number.length);
res[number.length] = 1;
res[number.length-1] = 1;
let g = 0;
for(let i=number.length-2;i>=0;i--){
if(parseInt(number[i]+""+number[i+1])<26)
g = 1;
else
g = 0;
res[i] = g*res[i+2] + res[i+1];
}
return res[0];
}