vector<string> letterCombinations(string digits) {
string letters[26] = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string> letterCombos;
if (digits.length() == 0)
{
string letterCombo;
letterCombos.push_back(letterCombo);
return letterCombos;
}
if (digits.length() <= 1)
{
stringstream stream;
stream<<digits;
int digit;
stream>>digit;
digit -= 2;
string letter;
letter = letters[digit];
for (int i = 0; i < letter.length(); i++)
{
string letterCombo = letter.substr(i, 1);
letterCombos.push_back(letterCombo);
}
return letterCombos;
}
string leftDigits = digits.substr(0, digits.length()-1);
string lastDigit = digits.substr(digits.length()-1, 1);
vector<string> leftLetterCombos = letterCombinations(leftDigits);
vector<string> lastLetters = letterCombinations(lastDigit);
for (int i = 0; i < leftLetterCombos.size(); i++)
{
string leftLetterCombo = leftLetterCombos[i];
for (int j = 0; j < lastLetters.size(); j++)
{
string lastLetter = lastLetters[j];
string letterCombo = leftLetterCombo + lastLetter;
letterCombos.push_back(letterCombo);
}
}
return letterCombos;
}
递归思想
[LeetCode] Letter Combinations of a Phone Number
最新推荐文章于 2020-08-10 10:20:18 发布