真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++——電話(huà)號(hào)碼的字母組合問(wèn)題-創(chuàng)新互聯(lián)

文章目錄
  • 電話(huà)號(hào)碼的字母組合
    • 題目鏈接
    • 思路:
    • 代碼:
    • 調(diào)試演示

寧縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!
電話(huà)號(hào)碼的字母組合 題目鏈接 思路:

首先使用string類(lèi)的數(shù)組存儲(chǔ)每個(gè)數(shù)字對(duì)應(yīng)的所有可能的字母,然后進(jìn)行回溯操作。

string arr[] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };

回溯過(guò)程中維護(hù)一個(gè)字符串,表示已有的字母排列(如果未遍歷完電話(huà)號(hào)碼的所有數(shù)字,則已有的字母排列是不完整的)。該字符串初始為空。每次取電話(huà)號(hào)碼的一位數(shù)字,從哈希表中獲得該數(shù)字對(duì)應(yīng)的所有可能的字母,并將其中的一個(gè)字母插入到已有的字母排列后面,然后繼續(xù)處理電話(huà)號(hào)碼的后一位數(shù)字,直到處理完電話(huà)號(hào)碼中的所有數(shù)字,即得到一個(gè)完整的字母排列。然后進(jìn)行回退操作,遍歷其余的字母排列。

回溯算法用于尋找所有的可行解,如果發(fā)現(xiàn)一個(gè)解不可行,則會(huì)舍棄不可行的解。在這道題中,由于每個(gè)數(shù)字對(duì)應(yīng)的每個(gè)字母都可能進(jìn)入字母組合,因此不存在不可行的解,直接窮舉所有的解即可。

但是思路易想,實(shí)現(xiàn)難,回溯我們這里就采用多路遞歸,比較難想的就是要考慮清楚遞歸的時(shí)候要傳什么變量去控制遞歸的深度,然后需要考慮是函數(shù)調(diào)用時(shí)是傳值?還是傳引用,下面代碼定義的vectorMyString;就是要存每一次拼接好的字符串就需要用傳引用調(diào)用,那么這里就還需要定義一個(gè)string類(lèi)型的combine;來(lái)完成一個(gè)拼接的功能,用范圍for去讓數(shù)字所代表的字符串逐個(gè)進(jìn)入遞歸函數(shù)中,用times控制遞歸次數(shù),這個(gè)次數(shù)times如果和digits.size()相等,那么就將拼接好的字符串尾插到combine中。

代碼:
class Solution {public:
    

    void Combine(vector&MyString, int times, string digits, string combine)
    {string arr[] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };

        if (times == digits.size())
        {MyString.push_back(combine);
            return;
        }

        for (auto ch : arr[digits[times] - '0'])
        {Combine(MyString, times + 1, digits, combine + ch);
        }
        
    }
    

    vectorletterCombinations(string digits) {

        vectorMyString;//最終組合好的vector
        
        if (digits.size() == 0)//當(dāng)這個(gè)字符串是空串的時(shí)候,直接返回就行
        {return MyString;
        }

        string combine;//靠他完成一個(gè)拼接的功能
        int times = 0;//控制遞歸次數(shù)
        
        Combine(MyString, times, digits, combine);//遞歸函數(shù)


        return MyString;


    }
};
調(diào)試演示

下面是當(dāng)digiets為字符串“2”時(shí)的調(diào)試演示。
在這里插入圖片描述


下面是當(dāng)digiets為字符串“23”時(shí)的調(diào)試演示。在這里插入圖片描述


好了今天的分享就到此為止了
最后:如果你覺(jué)得對(duì)你有用就一鍵三連吧,哪里有沒(méi)看懂的地方或者哪里有錯(cuò)誤可以在評(píng)論區(qū)留言歡迎批評(píng)指正,作者看到的話(huà)會(huì)第一時(shí)間回復(fù)。
end


你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


本文名稱(chēng):C++——電話(huà)號(hào)碼的字母組合問(wèn)題-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/dojgic.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部