leetcode_17.Letter Combinations of a Phone Number

https://leetcode.com/problems/letter-combinations-of-a-phone-number/?tab=Description

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"].


題意:題意很簡答。

解答:看別人的代碼只有幾十行,我寫了好多呀,各種情況,不過我的容易懂吧~


class Solution
{
public:
    vector<string> letterCombinations(string digits)
    {
        int length=digits.length();
        vector<string> v;
        int digit[length+1];
        for(int i=0; i<length; i++)
        {
            digit[i]=digits[i]-'0';
            if(i==0)
            {
                if(digit[i]==2)
                {


                    {
                        v.push_back("a");
                        v.push_back("b");
                        v.push_back("c");
                        ////v.erase(v.begin());
                    }
                }
                if(digit[i]==3)
                {


                    {
                        v.push_back("d");
                        v.push_back("e");
                        v.push_back("f");


                    }
                }
                if(digit[i]==4)
                {


                    {
                        v.push_back("g");
                        v.push_back("h");
                        v.push_back("i");
                        ////v.erase(v.begin());
                    }
                }
                if(digit[i]==5)
                {


                    {
                        v.push_back("j");
                        v.push_back("k");
                        v.push_back("l");
                        ////v.erase(v.begin());
                    }
                }
                if(digit[i]==6)
                {


                    {
                        v.push_back("m");
                        v.push_back("n");
                        v.push_back("o");
                        ////v.erase(v.begin());
                    }
                }
                if(digit[i]==7)
                {


                    {
                        v.push_back("p");
                        v.push_back("q");
                        v.push_back("r");
                        v.push_back("s");
                        //.erase(v.begin()+j);
                    }
                }
                if(digit[i]==8)
                {


                    {
                        v.push_back("t");
                        v.push_back("u");
                        v.push_back("v");
                        ////v.erase(v.begin());
                    }
                }
                if(digit[i]==9)
                {


                    {
                        v.push_back("w");
                        v.push_back("x");
                        v.push_back("y");
                        v.push_back("z");
                       // //v.erase(v.begin());
                    }
                }
                continue;
            }






            if(digit[i]==2)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"a");
                    v.push_back(v[j]+"b");
                    v.push_back(v[j]+"c");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
            if(digit[i]==3)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"d");
                    v.push_back(v[j]+"e");
                    v.push_back(v[j]+"f");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
            if(digit[i]==4)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"g");
                    v.push_back(v[j]+"h");
                    v.push_back(v[j]+"i");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
            if(digit[i]==5)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"j");
                    v.push_back(v[j]+"k");
                    v.push_back(v[j]+"l");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
            if(digit[i]==6)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"m");
                    v.push_back(v[j]+"n");
                    v.push_back(v[j]+"o");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
            if(digit[i]==7)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"p");
                    v.push_back(v[j]+"q");
                    v.push_back(v[j]+"r");
                    v.push_back(v[j]+"s");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
            if(digit[i]==8)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"t");
                    v.push_back(v[j]+"u");
                    v.push_back(v[j]+"v");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
            if(digit[i]==9)
            {
                int size=v.size();
                for(int j=0; j<size; j++)
                {
                    v.push_back(v[j]+"w");
                    v.push_back(v[j]+"x");
                    v.push_back(v[j]+"y");
                    v.push_back(v[j]+"z");
                    //v.erase(v.begin());
                }
                for(int j=0;j<size;j++){
                    v.erase(v.begin());
                }
            }
        }
        return v;
    }
};
發佈了27 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章