りこう筆問題 13日目(数字を文字列に変換)

記事ディレクトリ

トピック

ここに画像の説明を挿入

一連の考え

定義されたメソッドの総数は dp 配列で、デフォルトは dp[0]=1 です;
dp[i] は最初の i 桁のデコードの総数を示します. これは主に 2 つの場合に分けられます:
i 桁目前の数字と組み合わせることはできません (1 つだけを単独で使用できます) ビット デコード)、
たとえば 1245、5 は個別にのみ変換できます。その場合、1245 のメソッド番号は 124
dp[i] = dp[i - 1]
i 番目の数値は、
1215 などの前の数値と組み合わせることができます (2 ビットで一緒にデコードできます)、5 は組み合わせるかどうかを選択でき、最終結果は 2 つの状況の加算です
。組み合わせ、15 を全体と見なす場合、dp[i] = dp[i - 2]
b. 組み合わせを選択しない、5 を個別に翻訳する場合、dp[i] = dp[i - 1]

コード

var translateNum = function(num) {
    
    
    let i, dp = [1];
    for(i = 1; num > 0; i++,num = Math.floor(num/10)) {
    
    
        console.log(num)
        console.log(num%100)
        if(num%100 > 9 && num % 100 < 26) {
    
    
            if(i === 1) {
    
    
                dp[i] = 2;
            } else {
    
    
                dp[i] = dp[i - 1] + dp[i - 2];
            }
        } else {
    
    
            dp[i] = dp[i - 1];
        }
    }
    console.log(dp)
    return dp[i - 1];
};

おすすめ

転載: blog.csdn.net/weixin_51610980/article/details/128501392