가능한 모든 인쇄가 주어지면 조합 다음 사양으로 주어진 숫자를 전화로 전화로 전화하는 데 사용할 수있는 문자열. 주어진 전화에서 우리는 d 또는 e 또는 f를 사용하여 A 또는 B 또는 C 3을 사용하여 2를 다이얼 할 수 있습니다 ............... 8 T 또는 u 또는 v 9를 사용하여 W 또는 x 또는 y 또는 z 1을 사용하여 0을 사용하여 1 0을 사용하여 1을 사용하여 1. 주어진 전화 번호 인 경우 프로그램이 Ad ae af Bd를 인쇄해야합니다.
아이디어는 해시 맵에서 숫자를 문자 매핑에 저장하는 것입니다. 맵은 사용할 수있는 모든 문자를 숫자로 저장합니다. 우리는 현재 숫자에 가능한 모든 캐릭터를 배치하고 나머지 숫자를 위해 recur.
자바 클래스 예
연산:
- 키가 0에서 9의 숫자로 키를 가진 해시 맵을 생성하고 각 숫자와 관련된 문자 세트로 값을 만듭니다.
- 네 가지 인수를 취하는 재귀 함수 인쇄물 정의 :
에이. phno- 입력 전화 번호
비. I- 처리중인 현재 숫자의 인덱스
기음. hm- 캐릭터 세트 대 숫자의 해시 맵
디. str- 지금까지 생성 된 문자열 - 인쇄물 기능 내부 :
에이. 전화 번호의 끝에 도달했는지 확인하십시오. 그렇다면 생성 된 문자열을 인쇄하고 반환하십시오.
비. 해시 맵에서 현재 숫자와 관련된 문자 세트를 가져옵니다.
기음. 세트의 각 캐릭터를 반복하고 :
나. 문자열 str에 문자를 추가하십시오.
II. 다음 숫자에 대한 인쇄물 함수를 재귀 적으로 호출하십시오.
III. 문자열 str에서 마지막 문자를 제거하십시오. - 하나의 인수를 취하는 함수 printstringfornumber 정의 :
에이. phno- 입력 전화 번호 - printstringfornumber 함수 내부에서 인수 phno 0 hm 및 빈 문자열로 printstrings 함수를 호출하십시오.
아래는이 아이디어의 Java 구현입니다.
구현:
C++// C++ program for the above approach #include #include using namespace std; void printStrings(string phNo int i unordered_map<char string> hm string str) { if (i == phNo.length()) { cout << str << ' '; return; } string s = hm[phNo[i]]; for (int j = 0; j < s.length(); j++) { str.push_back(s[j]); printStrings(phNo i+1 hm str); str.pop_back(); } } void printStringForNumber(string phNo) { unordered_map<char string> hm = { {'2' 'ABC'} {'3' 'DEF'} {'4' 'GHI'} {'5' 'JKL'} {'6' 'MNO'} {'7' 'PQRS'} {'8' 'TUV'} {'9' 'WXYZ'} {'1' '1'} {'0' '0'} }; string str; printStrings(phNo 0 hm str); } int main() { printStringForNumber('23'); return 0; } // This code is contributed by codebraxnzt
Java // Java program to print all possible key strings // that can be used to dial a phone number. import java.util.HashMap; class ConvertToString { // A Recursive function to print all combinations // that can be used to dial a given number. // phNo ==> Given Phone Number // i ==> Current digit of phNo to be processed // hm ==> Stores characters that can be used to // to dial a digit. // str ==> Current output string static void printStrings(String phNo int i HashMap<Character String> hm StringBuilder str) { // If all digits are processed print output // string if (i == phNo.length()) { System.out.print(str + ' '); return; } // Get current digit of phNo and recur for all // characters that can be used to dial it. String s = hm.get(phNo.charAt(i)); for (int j = 0; j < s.length(); j++) { str.append(s.charAt(j)); printStrings(phNo i+1 hm str); str.deleteCharAt(str.length()-1); } } // Prints all possible combinations of strings that // can be used to dial c[]. static void printStringForNumber(String phNo) { // Create a HashMap HashMap<Character String> hm = new HashMap<Character String>(); // For every digit store characters that can // be used to dial it. hm.put('2' 'ABC'); hm.put('3' 'DEF'); hm.put('4' 'GHI'); hm.put('5' 'JKL'); hm.put('6' 'MNO'); hm.put('7' 'PQRS'); hm.put('8' 'TUV'); hm.put('9' 'WXYZ'); hm.put('1' '1'); hm.put('0' '0'); // Create a string to store a particular output // string StringBuilder str = new StringBuilder(); // Call recursive function printStrings(phNo 0 hm str); } // Driver code to test above methods public static void main(String args[]) { // Prints printStringForNumber('23'); } }
Python def print_strings(ph_no i hm s): if i == len(ph_no): print(s end=' ') return for c in hm[ph_no[i]]: print_strings(ph_no i+1 hm s+c) def print_string_for_number(ph_no): hm = { '2': 'ABC' '3': 'DEF' '4': 'GHI' '5': 'JKL' '6': 'MNO' '7': 'PQRS' '8': 'TUV' '9': 'WXYZ' '1': '1' '0': '0' } s = '' print_strings(ph_no 0 hm s) print_string_for_number('23')
C# using System; using System.Collections.Generic; class Program { static void printStrings(string phNo int i Dictionary<char string> hm string str) { if (i == phNo.Length) { Console.Write(str + ' '); return; } string s = hm[phNo[i]]; for (int j = 0; j < s.Length; j++) { str += s[j]; printStrings(phNo i+1 hm str); str = str.Remove(str.Length-1); } } static void printStringForNumber(string phNo) { Dictionary<char string> hm = new Dictionary<char string> { {'2' 'ABC'} {'3' 'DEF'} {'4' 'GHI'} {'5' 'JKL'} {'6' 'MNO'} {'7' 'PQRS'} {'8' 'TUV'} {'9' 'WXYZ'} {'1' '1'} {'0' '0'} }; string str = ''; printStrings(phNo 0 hm str); } static void Main(string[] args) { printStringForNumber('23'); } }
JavaScript function printStrings(phNo i hm s) { if (i === phNo.length) { console.log(s + ' '); return; } for (let j = 0; j < hm[phNo[i]].length; j++) { s += hm[phNo[i]][j]; printStrings(phNo i+1 hm s); s = s.slice(0 -1); } } function printStringForNumber(phNo) { let hm = { '2': 'ABC' '3': 'DEF' '4': 'GHI' '5': 'JKL' '6': 'MNO' '7': 'PQRS' '8': 'TUV' '9': 'WXYZ' '1': '1' '0': '0' }; let s = ''; printStrings(phNo 0 hm s); } printStringForNumber('23');
산출
AD AE AF BD BE BF CD CE CF
시간 복잡성 : O (2^N) 여기서 n은 줄의 길이입니다
보조 공간 : O (N)
중앙 CSS 버튼