日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

17. 电话号码的字母组合(回溯算法)

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 17. 电话号码的字母组合(回溯算法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。答案可以按 任意順序 返回。
給出數字到字母的映射如下(與電話按鍵相同)。注意 1 不對應任何字母。

示例 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’] 的一個數字。

這道題同樣是相同的回溯思路,主要不同的地方在于
這里的回溯函數不需要start了,需要一個index,這個index是記錄遍歷第幾個數字了,就是用來遍歷digits,當index和digits.size()相等時遞歸終止;

這道題目對應用能力考察的比較多,看到題目,就應該想到用一個string類的數組來將每個數字對應字母存起來,
調用每個數字對應字母時需要先從digits中找到對應數字,通過對應數字找到對應字符串,再進行for循環遍歷

這個套路其實和上一道題目77.組合差不多,不能說完全一樣,但是都是走的回溯的套路

代碼如下:

class Solution { private:const string letterMap[10] = {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs",// 7"tuv", // 8"wxyz",// 9}; public:vector<string> ans;string path;void backtracking(string digits, int index) {if (index == digits.size()) {ans.push_back(path);return ;}int digit = digits[index] - '0';string letter = letterMap[digit];for (char i : letter) {path.push_back(i);backtracking(digits, index + 1);path.pop_back();}}vector<string> letterCombinations(string digits) {if (digits.size() == 0) return ans;backtracking(digits, 0);return ans;} };

總結

以上是生活随笔為你收集整理的17. 电话号码的字母组合(回溯算法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。