码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode Letter Combinations of a Phone Number

时间:2014-06-25 09:15:12      阅读:362      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   http   color   

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.

bubuko.com,布布扣

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.

本题利用队列实现即可

如“23”,

首先获取2

然后相对列中插入a,b,c

然后弹出a,在a后面附件下面一个数字,即ad,ae,af,插入队列即可

vector<string> letterCombinations(string digits) {
    vector<string> res;
    if(digits.length() == 0) {res.push_back("");return res;}
    string num_map[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    queue<string> que;
    int n = num_map[digits[0]-0].length();
    if(n == 0) que.push("");
    else{
        for(int i = 0; i <n;  ++ i){
            string tmp = string(1,num_map[digits[0]-0][i]);
            que.push(tmp);
        }
    }
    int index =1;
    while(!que.empty() && index < digits.length()){
        int cnt = que.size();
        while(cnt-->0){
            string a = que.front();que.pop();
            int len = num_map[digits[index]-0].length();
            if(len == 0) que.push(a);
            else{
                for(int i = 0; i < len; ++ i ){
                    string tmp = a+num_map[digits[index]-0][i];
                    que.push(tmp);
                }
            }
        }
        index++;
        
    }
    while(!que.empty()) {res.push_back(que.front());que.pop();}
    return res;
}

 

Leetcode Letter Combinations of a Phone Number,布布扣,bubuko.com

Leetcode Letter Combinations of a Phone Number

标签:style   class   blog   code   http   color   

原文地址:http://www.cnblogs.com/xiongqiangcs/p/3806955.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!