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));
}
}
}
Sie sprechen von alten Telefonen, wo jede Ziffer am Telefon 3 Buchstaben hat? – mjosh
Ja, ich nehme ein altes Telefon an. –
@SuryaPrakashKushawah Ich hoffe, es wird helfen, dies zu überprüfen (http://www.geeksforgeeks.org/find-possible-writres-phone-digits/). – Raghavendra