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

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

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

電話號碼的字母組合

描述

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

給出數(shù)字到字母的映射如下(與電話按鍵相同)。注意 1 不對應(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'] 的一個數(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)長度為0或1時直接跳出)
        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++ 電話號碼的字母組合的文章就介紹到這了,更多相關(guān)C++ 電話號碼的字母組合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

    下面小編就為大家?guī)硪黄钊肜斫釩預(yù)處理器。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • C++?使用getline()從文件中讀取一行字符串方法示例

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

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

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

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

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

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

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

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

    深入解析C語言中常數(shù)的數(shù)據(jù)類型

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

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

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

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

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

最新評論

沛县| 右玉县| 葵青区| 常德市| 法库县| 岐山县| 广宁县| 双城市| 绥中县| 双鸭山市| 梁河县| 林口县| 黄山市| 鄂州市| 高邑县| 页游| 延边| 仁怀市| 京山县| 北安市| 轮台县| 鄱阳县| 怀安县| 合作市| 化州市| 滨州市| 甘德县| 永平县| 奎屯市| 偃师市| 千阳县| 乌拉特中旗| 确山县| 赫章县| 壶关县| 潢川县| 沿河| 磐安县| 渭南市| 顺义区| 望奎县|