Exemple #1
0
 vector<string> letterCombinations(string digits) {
     // Start typing your C/C++ solution below
     // DO NOT write int main() function
     int letters[26] = {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9};
     results.clear();
     vector<char> result;
     doCombine(letters, result, digits, 0);
     return results;
 }
Exemple #2
0
 void doCombine(int letters[], vector<char> &result, string digits, int index) {
     if (index == digits.size()) {
         string str(result.begin(), result.end());
         results.push_back(str);
     }
     for (int i = 0; i < 26; i++) {
         if (letters[i] == digits[index] - '0') {
             result.push_back('a' + i);
             doCombine(letters, result, digits, index + 1);
             result.pop_back();
         }
     }
 }
Exemple #3
0
void doCombine(char in[], char out[], int length, int recurLev, int start){
	
	int i;
	for(i=start; i<length; i++){
		// Select current letter
		out[recurLev] = in[i];
		// Tack on NUL for printf
		out[recurLev+1] = '\0';
		printf("%s\n", out);
		
		// Recurse if more letters in input
		// if(i < length-1){
			doCombine(in, out, length, recurLev+1, i+1);
		// }
	}
}
Exemple #4
0
int combine(char in[]){
	
	int length;
	char* out;
	
	length = strlen(in);
	
	// Allocate output buffer
	out = (char*)malloc(length + 1);
	
	if(!out){
		return 0;		// Failed
	}
	
	// Enter recursive portion
	doCombine(in, out, length, 0, 0);
	free(out);
	return 1;		// Success
}