まず最初に、古いファブレット電話のボタンデスクトップに似たこの写真を見てみましょう。
「2」キーを押すと、「A」、「B」、「C」の 3 つの文字を呼び出すことができます。
「1」と「0」キーを除いて、他の数字キーはさまざまな文字を呼び出すことができます。
ここで問題は、4 つの任意の数字キーを選択して、英数字の組み合わせをいくつ取得できるかということです。
たとえば、「0002」を選択したのは、「0」キーには対応する文字がないため、その組み合わせは「000A」、「000B」、「000C」の 3 つだけです。
より複雑な例を見てみましょう。「0023」を押し続けると、「0」は変化せず、「2」は「A」、「B」、「C」に対応し、「3」は「D」、「」に対応します。 E" 、 "F" の場合、順列と組み合わせの知識によれば、1*1*3*3=9 個の組み合わせが存在するはずです。
それでは、この問題を解決する方法を見てみましょう。
最初のステップは、数字キーと対応する文字との関係に基づいてマッピングを確立することです。
var map = { 1 : [ 1 ], 2 : [ "A", "B", "C" ], 3 : [ "D", "E", "F" ], 4 : [ "G", "H", "I" ], 5 : [ "J", "K", "L" ], 6 : [ "M", "N", "O" ], 7 : [ "P", "Q", "R", "S" ], 8 : [ "T", "U", "V" ], 9 : [ "W", "X", "Y", "Z" ], 0 : [ 0 ] };
2 番目のステップは、再帰を使用して順列と組み合わせを解決することです
function telephoneWords(digitString) { var array = []; var result = []; digitString.split("").forEach(function(e) { array.push(map[e]); }) var traverse = function foo(from, to) { if (to.length < 4) { var cur = from.shift(); for (var i = 0; i < cur.length; i++) { var newTo = to.slice(0); newTo.push(cur[i]); var newFrom = from.slice(0); foo(newFrom, newTo); } } else { result.push(to.join("")); } }; traverse(array, []); return result; }
上記は、JavaScript の興味深い質問の内容です: 実践的な順列と組み合わせ 詳細については、PHP 中国語 Web サイト (www. php.cn)!