zoukankan      html  css  js  c++  java
  • 17. Letter Combinations of a Phone Number (backtracking)

    Given a digit string, return all possible letter combinations that the number could represent.

    A mapping of digit to letters (just like on the telephone buttons) is given below.

    Input:Digit string "23"
    Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
    /**
     * Return an array of size *returnSize.
     * Note: The returned array must be malloced, assume caller calls free().
     */
    char* digit2Letter(char digit){
        switch(digit){
        case '2':
          return "abc";
        case '3':
          return "def";
        case '4':
          return "ghi";
        case '5':
          return "jkl";
        case '6':
          return "mno";
        case '7':
          return "pqrs";
        case '8':
          return "tuv";
        case '9':
          return "wxyz";
        default:
          return "";
        }
    }
     
    char** letterCombinations(char* digits, int* returnSize) {
        char** returnArray = NULL;
        if(*digits == '') return returnArray;
        
        char* returnElem = malloc(sizeof(char)*sizeof(strlen(digits)));
        returnArray = malloc(sizeof(char*)*1000); 
        backTracking(digits, returnArray, returnSize, returnElem, 0);
    
        return returnArray;
    }
    
    void backTracking(char* digits, char** returnArray, int* returnSize, char* returnElem, int pElem){
        if(*digits == ''){
            (*returnSize)++;
            char* elem = malloc(sizeof(char)*pElem);
            memcpy(elem, returnElem, sizeof(char)*pElem);
            elem[pElem] = '';
            printf("elem[0] = %d, elem[1] = %d
    ",elem[0],elem[1]);
            returnArray[*returnSize-1] = elem;
            return;
        }
        
        char* str = digit2Letter(*digits);
        int len = strlen(str);
        for(int i = 0; i < len; i++){
            returnElem[pElem] = str[i];
    
            backTracking(digits+1, returnArray, returnSize, returnElem, pElem+1 );
        }
    }
  • 相关阅读:
    JavaScript
    Eclipse修改类的注释模板
    无法解析指定的连接标识符的解决办法
    MySQL
    IDEA修改SQL语句的关键字大写
    iframe中操作后通过后台返回脚本,让父窗口刷新
    IDEA启动Tomcat控制台打印乱码
    Eclipse如何打开文件的磁盘位置
    深度学习目标检测算法综述(论文和代码)
    关于并发,异步,非阻塞(python)疑惑的一些资料解答
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/5398527.html
Copyright © 2011-2022 走看看