最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?電話號(hào)碼的字母組合功能實(shí)現(xiàn)

 更新時(shí)間:2022年08月08日 09:28:56   作者:ufgnix0802  
這篇文章主要介紹了C++?電話號(hào)碼的字母組合,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

電話號(hào)碼的字母組合

描述

給定一個(gè)僅包含數(shù)字 2-9 的字符串,返回所有它能表示的字母組合。答案可以按 任意順序 返回。

給出數(shù)字到字母的映射如下(與電話按鍵相同)。注意 1 不對(duì)應(yīng)任何字母。

效果圖

示例1

輸入:digits = "23"
輸出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例2

輸入:digits = ""
輸出:[]

示例3

輸入:digits = "2"

輸出:["a","b","c"]

提示:

0 <= digits.length <= 4

digits[i] 是范圍 ['2', '9'] 的一個(gè)數(shù)字。

思路/解法

方式一

回溯算法,在當(dāng)前題目非常適合。先使用map容器記錄所有可能,在回溯遍歷即可。

class Solution {
public:
    void TrackBack(string& digits,int charStart,int size,string& back,vector<string>& res,std::unordered_map<char,string>& maps)
    {
        if(back.length() == size)
        {
            res.push_back(back);
            return;
        }
        int length = maps[digits[charStart]].length();
        std::string str = maps[digits[charStart]];
        for(int i = 0;i < length; i++)
        {
            back.push_back(str[i]);
            TrackBack(digits,charStart + 1,size,back,res,maps);
            back.pop_back();
        }
    }

    vector<string> letterCombinations(string digits) {
        vector<string> arrs;
        if(digits == "")
            return arrs;
        std::unordered_map<char,string> maps{{'2',"abc"},{'3',"def"},{'4',"ghi"},
        {'5',"jkl"},{'6',"mno"},{'7',"pqrs"},{'8',"tuv"},{'9',"wxyz"}};
        string back;
        TrackBack(digits,0,digits.length(),back,arrs,maps);
        return arrs;
    }
};

方式二

遞歸法,使用遞歸求解出所有的可能性并合并結(jié)果即可。

class Solution {
public:
    vector<string> CharCombine(string digits,unordered_map<char,string>& maps)
    {
        vector<string> tmp;
        int length = digits.size();
        //邊界條件(當(dāng)長(zhǎng)度為0或1時(shí)直接跳出)
        if(1 == length)
        {
            string str = maps[digits[0]];
            for(int j = 0;j < str.length();j++)
            {
                string s = "";
                tmp.push_back(s.append(1,str[j]));
            }
            return tmp;
        }
        else if(0 == length)
            return tmp;
        else//遞歸
        {
            string str = maps[digits[length-1]];
            vector<string> res = CharCombine(digits.substr(0,length-1),maps);
            for(int i = 0;i < str.length();i++)
            {
                for(int j = 0;j < res.size();j++)
                {
                    string t = res[j];
                    tmp.push_back(t.append(1,str[i]));
                }
            }
            return tmp;
        }
    }

    vector<string> letterCombinations(string digits) {
        std::unordered_map<char,string> maps{{'2',"abc"},{'3',"def"},{'4',"ghi"},
        {'5',"jkl"},{'6',"mno"},{'7',"pqrs"},{'8',"tuv"},{'9',"wxyz"}};
        return CharCombine(digits,maps);
    }
};

到此這篇關(guān)于C++ 電話號(hào)碼的字母組合的文章就介紹到這了,更多相關(guān)C++ 電話號(hào)碼的字母組合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用C++的基本算法實(shí)現(xiàn)十個(gè)數(shù)排序

    利用C++的基本算法實(shí)現(xiàn)十個(gè)數(shù)排序

    以下是對(duì)利用C++的基本算法實(shí)現(xiàn)十個(gè)數(shù)排序的代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C、C++線性表基本操作的詳細(xì)介紹

    C、C++線性表基本操作的詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于C、C++線性表基本操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 深入理解C預(yù)處理器

    深入理解C預(yù)處理器

    下面小編就為大家?guī)?lái)一篇深入理解C預(yù)處理器。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • C++?使用getline()從文件中讀取一行字符串方法示例

    C++?使用getline()從文件中讀取一行字符串方法示例

    這篇文章主要介紹了C++?使用getline()從文件中讀取一行字符串方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 可能是你看過(guò)最全的十大排序算法詳解(完整版代碼)

    可能是你看過(guò)最全的十大排序算法詳解(完整版代碼)

    排序算法是程序中常用的算法,下面這篇文章主要給大家介紹了關(guān)于十大排序算法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • C/C++?Qt?給ListWidget組件增加右鍵菜單功能

    C/C++?Qt?給ListWidget組件增加右鍵菜單功能

    本篇文章給大家介紹ListWidget組件增加一個(gè)右鍵菜單,當(dāng)用戶在ListWidget組件中的任意一個(gè)子項(xiàng)下右鍵,我們讓其彈出這個(gè)菜單,并根據(jù)選擇提供不同的功能,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Cocos2d-x學(xué)習(xí)筆記之Hello World!

    Cocos2d-x學(xué)習(xí)筆記之Hello World!

    這篇文章主要介紹了Cocos2d-x學(xué)習(xí)筆記之Hello World!本文基于vs2010和C++語(yǔ)言開(kāi)發(fā),需要的朋友可以參考下
    2014-09-09
  • 深入解析C語(yǔ)言中常數(shù)的數(shù)據(jù)類(lèi)型

    深入解析C語(yǔ)言中常數(shù)的數(shù)據(jù)類(lèi)型

    C語(yǔ)言中常數(shù)的數(shù)據(jù)類(lèi)型,需要的朋友可以過(guò)來(lái)參考下。希望對(duì)大家有所幫助
    2013-10-10
  • OpenGL實(shí)現(xiàn)邊緣填充算法

    OpenGL實(shí)現(xiàn)邊緣填充算法

    這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)邊緣填充算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++的get()函數(shù)與getline()函數(shù)使用詳解

    C++的get()函數(shù)與getline()函數(shù)使用詳解

    這篇文章主要介紹了C++的get()函數(shù)與getline()函數(shù)使用詳解,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09

最新評(píng)論

襄垣县| 藁城市| 伊宁县| 永康市| 舟山市| 夏邑县| 当雄县| 城固县| 镶黄旗| 方城县| 乌兰察布市| 昭通市| 城固县| 务川| 奉化市| 漠河县| 麻城市| 青河县| 江永县| 横峰县| 夏邑县| 米易县| 罗田县| 洱源县| 五河县| 营口市| 黄石市| 道真| 峨边| 吴忠市| 平武县| 浠水县| 福泉市| 海丰县| 横山县| 东兰县| 大冶市| 石楼县| 肥城市| 山西省| 库伦旗|