vector<string> letterCombinations(string digits) { vector<string> ans; if (digits.size() == 0){ ans.push_back(""); return ans; } vector<string> after = letterCombinations(digits.substr(0,digits.size()-1)); for(int i = 0; i < after.size(); i++){ char c = (digits[digits.size()-1] - '2')*3+'a'; if (digits[digits.size() - 1] < '7'){ ans.push_back(addChar(after[i],c)); ans.push_back(addChar(after[i],c+1)); ans.push_back(addChar(after[i],c+2)); } else { ans.push_back(addChar(after[i],c+1)); ans.push_back(addChar(after[i],c+2)); ans.push_back(addChar(after[i],c+3)); } if (digits[digits.size()-1] == '7'){ ans.push_back(addChar(after[i],'p')); } if (digits[digits.size()-1] == '9'){ ans.push_back(addChar(after[i],'z')); } } return ans; }
vector<string> letterCombinations(string digits) { vector<string> result; if (digits.size() == 0) return result; string charmap[8] = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; result = letterCombinations(digits, charmap, 0); return result; }
vector<string> letterCombinations(string digits) { vector<string> vecFinalResult; letterCombinations(digits, 0, vecFinalResult); return vecFinalResult; }
int main(int argc, char **argv) { int i, size = 0; char ** letters = letterCombinations(argv[1], &size); for (i = 0; i < size; i++) { printf("%s\n", letters[i]); free(letters[i]); } free(letters); return 0; }
int main(int argc, char *argv[]) { int n, i; char **res; res = letterCombinations(argv[1], &n); for (i = 0; i < n; i++) printf("%s\n", res[i]); return(0); }
int main(int argc, char const *argv[]) { char *input = "222"; int mySize; char **result = letterCombinations(input, &mySize); for(int i=0; i<mySize; ++i) printf("%s\n", result[i]); /* code */ return 0; }
vector<string> letterCombinations(string digits) { int length = (int)digits.length(); vector<string> strings; if (length == 0) { strings.push_back(""); return strings; } string prefix = digitToChar(digits[0] - '0'); if (prefix.length() == 0) return letterCombinations(digits.substr(1)); else { vector<string> suffix = letterCombinations(digits.substr(1)); int preLength = (int)prefix.length(); for (int i = 0; i < preLength; i++) { for (unsigned int j = 0; j < suffix.size(); j++) { string s = string(1, prefix[i]); strings.push_back(s.append(suffix[j])); } } } return strings; }
int main(int arg, char *argv[]) { // insert code here... printf("LeetCode 017 Letter Combinations of a Phone Number, C ... ...\n"); char digits[] = "29"; printf("%s\n", digits); int *returnSize = (int*)malloc(sizeof(int)); *returnSize = 3; char **v = letterCombinations(digits, returnSize); printArray(v, *returnSize); return 0; }
vector<string> letterCombinations(string digits, string charmap[8],int index) { vector<string> result; if (index >= digits.size()) { result.push_back(""); return result; } string temp = charmap[digits[index] - '2']; vector<string> remaining = letterCombinations(digits, charmap, index + 1); for (int i = 0; i < temp.size(); i++) { for (int j = 0; j < remaining.size(); j++) { string s = temp[i] + remaining[j]; result.push_back(s); } } return result; }
vector<string> letterCombinations(string digits) { vector<string> ret, subString; int idx; if(digits == "") return ret; idx = digits[0]-'0'; if(digits.size() == 1){ for(int i=0;i<charts[idx].size();++i) ret.push_back(charts[digits[0]-'0'][i]); return ret; } subString = letterCombinations(digits.substr(1, digits.size()-1)); for(int i=0;i<charts[idx].size();++i){ for(int j=0;j<subString.size();++j){ ret.push_back(charts[idx][i]+subString[j]); } } return ret; }
vector<string> LetterCombinationsOfAPhoneNumber::letterCombinations(string digits) { vector<string> ret; if (digits.size() == 0) return ret; else if (digits.size() == 1) { for (auto c : keyMap[digits[0] - '0']) ret.push_back(string(1, c)); return ret; } else { vector<string> tails = letterCombinations(digits.substr(1)); for (auto c : keyMap[digits[0] - '0']) { for (auto t : tails) { ret.push_back(string(1, c) + t); } } return ret; } }
vector<string> letterCombinations(string digits) { vector<string> ret; if(digits.size()==0) return ret; vector<string> v; v = letterCombinations(digits.substr(1,digits.size()-1)); int j = digits[0]-'0'; for(int i=0;i<4&&dtoch[j][i]!='\0';++i){ if(v.size()==0){ string s; s = dtoch[j][i]; ret.push_back(s); continue; } for(int k=0;k<v.size();++k){ string s; s = dtoch[j][i]+v[k]; ret.push_back(s); } } return ret; }
void letterCombinations(const string & strDigits, int iStartIndex, vector<string> & vecResult) { if (iStartIndex >= strDigits.size()) { return; } vector<char> & vecDstDigitList = m_avecDigitLetter[(int)(strDigits[iStartIndex] - '2')]; if (iStartIndex == strDigits.size() - 1) { for (int iIndex = 0; iIndex < vecDstDigitList.size(); iIndex ++) { vecResult.push_back(string(1, vecDstDigitList[iIndex])); } return; } letterCombinations(strDigits, iStartIndex + 1, vecResult); int iResultRawSize = vecResult.size(); for (int iIndex = 1; iIndex < vecDstDigitList.size(); iIndex ++) { for (int jIndex = 0; jIndex < iResultRawSize; jIndex ++) { vecResult.push_back(string(1, vecDstDigitList[iIndex]).append(vecResult[jIndex])); } } for (int iIndex = 0; iIndex < iResultRawSize; iIndex ++) { vecResult[iIndex] = string(1, vecDstDigitList[0]).append(vecResult[iIndex]); } }
void main(void) { char s[] = "0123"; int n; letterCombinations(s, &n); }