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;
  }
Example #2
0
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;
}
Example #3
0
 vector<string> letterCombinations(string digits)
 {
     vector<string> vecFinalResult;
     
     letterCombinations(digits, 0, vecFinalResult);
     
     return vecFinalResult;
 }
Example #4
0
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;
}
Example #5
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;
 }
Example #8
0
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;
}
Example #9
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;
 }
Example #13
0
 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);
}