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 );
        }
    }
  • 相关阅读:
    浅拷贝与深拷贝的实现
    Java批量下载生成zip文件
    jsp页面内容导出到Excel中
    Table动态增加删除行
    JavaScript校验日期格式
    java实现算术表达式求值
    XCode 4 编译错误大全整理
    VMWare安装黑苹果Mac OS
    ODA(Open Design Alliance)介绍
    AutoCAD 2010 开发与之前版本的区别
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/5398527.html
Copyright © 2011-2022 走看看