天天看点

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.

leetcode_17.Letter Combinations of a Phone Number
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;

    }

};