우선 옛날 패블릿폰의 버튼 바탕화면과 비슷한 이 사진부터 보시죠.
'2' 키를 누르면 'A', 'B', 'C' 세 글자를 불러올 수 있습니다.
'1'과 '0' 키를 제외한 다른 숫자 키는 다양한 문자를 불러올 수 있습니다.
이제 질문은 임의의 숫자 키 4개를 선택하면 몇 개의 영숫자 조합을 얻을 수 있느냐는 것입니다.
예를 들어 "0" 키에는 해당 문자가 없으므로 "0002"를 선택했습니다. 따라서 "000A", "000B", "000C"의 세 가지 조합만 있습니다.
좀 더 복잡한 예를 들어보겠습니다. "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 ] };
두 번째 단계는 재귀를 사용하여 순열과 조합을 푸는 것입니다
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 중국어 홈페이지(www.php.cn)를 주목해주세요!