JavaScriptの| LeetCode |検索|。17モノグラムの電話番号

方法1:バックトラック後戻り
回答読んで
考えを:

  1. 各弦の出力の長さは、入力された文字列の長さに等しいです
  2. 深さまで探索木対応の入力文字列の長さ(高さ)
  3. 長さからなる文字列の長さが入力文字列に等しい場合、文字列は、結果セットに追加する必要があり、その後、最後の文字¥削除され、新たな文字列に追加し、同じグループ¥組成物に参加しました

:¥文字コードで、キーボード上の同じボタン上の同じグループを参照してください。

/** * @param {string} digits * @return {string[]} */
var letterCombinations = function(digits) {    
    if(digits == undefined || digits.length == 0) {        
        return [];    
    }    
    var keys = [];    
    keys.push(""); // 0    
    keys.push(""); // 1    
    keys.push("abc"); // 2    
    keys.push("def");    
    keys.push("ghi");    
    keys.push("jkl");    
    keys.push("mno");    
    keys.push("pqrs");    
    keys.push("tuv");    
    keys.push("wxyz");
    var output = [];    
    doCombination(output, "", keys, digits);    
    return output;
};

function doCombination(output, prefix, keys, digits) {    
    if(prefix.length == digits.length) {        
        output[output.length] = prefix;        
        return;    
    }    
    var i = 0, index = Number(digits[prefix.length]);
    // index:通过已有字符串prefix的长度,确定此时到了搜索树的第几层,即digits的哪一位        

    for(i = 0; i < keys[index].length; i++) { // 遍历相应层次字符        
        prefix += keys[index].charAt(i); // 衔接字符        
        doCombination(output, prefix, keys, digits);        
        prefix = prefix.substring(0, prefix.length - 1); // 去除字符    
    }
}
リリース7件のオリジナルの記事 ウォンの賞賛0 ビュー55

おすすめ

転載: blog.csdn.net/J_learner/article/details/104692479