2016-10-17 2 views
-2

Meine Frage ist Wie viele Wörter sind mit sieben Ziffern möglich, wobei jede Ziffer n Buchstaben darstellt? Wenn wir 2,3,4 drücken, während ein Text möglich Wörter eingeben, die gebildet werden können, sind (in alphabetischer Reihenfolge):Drucken Sie alle möglichen Wörter aus den Telefonnummern

wenn Eingangsnummer 234 ist, adg adh adi aeg aeh AEI afg afh afi bdg BDH bdi beg beh bei bfg bfh bfi cdg CDH cdi CEG ceh CEI cfg cfh cfi

+1

Sie sprechen von alten Telefonen, wo jede Ziffer am Telefon 3 Buchstaben hat? – mjosh

+0

Ja, ich nehme ein altes Telefon an. –

+0

@SuryaPrakashKushawah Ich hoffe, es wird helfen, dies zu überprüfen (http://www.geeksforgeeks.org/find-possible-writres-phone-digits/). – Raghavendra

Antwort

0

// nennen diese

List<String> perms = permutation("", "abc"); 
    // instead of "abc write your 7 digit number 

      String[] array = new String[perms.size()]; 
      for (int i = 0; i < perms.size(); i++) { 
       array[i] = perms.get(i); 
      } 

      int x = array.length; 

      for (final String anArray : array) { 
       System.out.println(anArray); 
      } 

// Methode für sie

private static List<String> permutation(String prefix, String str) { 
     List<String> permutations = new ArrayList<>(); 
     int n = str.length(); 
     if (n == 0) { 
      permutations.add(prefix); 
     } else { 
      for (int i = 0; i < n; i++) { 
       permutations.addAll(permutation(prefix + str.charAt(i), str.substring(i + 1, n) + str.substring(0, i))); 
      } 
     } 
     return permutations; 
    } 
2

rekursive Lösung:

void printAllWordsFromPhoneNumber(string phonenumber) 
{ 
    printAllWordsFromPrefixAndPhoneNumber("", phonenumber); 
} 

string getLettersForNumber(char digit) 
{ 
    string [] table = {"", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"}; 
    bool valid = ((digit >= '0') && (digit <= '9')); 
    return valid ? table[digit-'0'] : ""; 
} 

void printAllWordsFromPrefixAndPhoneNumber(string prefix, string remaining) 
{ 
    if ((remaining == null) || (remaining.length()==0)) 
    { 
     System.out.println(prefix); 
    } 
    else 
    { 
     string chars_in_digit = getLettersForNumber(remaining.charAt(0)); 

     for (int i = 0; i < chars_in_digit.length(); i++) 
     { 
      string newprefix = prefix + chars_in_digit.charAt(i); 
      string newremaining = remaining.substr(1); 
      printAllWordsFromPrefixAndPhoneNumber(newprefix, newremaining); 
     } 

     // special case for "0" and "1" since neither has any letters associated with them. 
     if (chars_in_digit.length() == 0) 
     { 
      printAllWordsFromPrefixAndPhoneNumber(prefix, remaining.substr(1)); 
     } 

    } 
} 
+0

bitte machen Sie diese Frage –

Verwandte Themen