LeetCode | Letter Combinations of a Phone Number

    xiaoxiao2025-02-27  19

    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.

    Input:Digit string “23” Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. Note: Although the above answer is in lexicographical order, your answer could be in any order you want.

    同样,是利用dfs。 深搜复杂度O(3^n),空间复杂度O(n);

    注意对字符串常量数组map的初始化方法【放在本地可能过不了得拿数组转】 此外将n和digits设置为全局的方式简直治愈~

    class Solution { public: const vector<string> map {" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; int n; string digits; vector<string> letterCombinations(string digits) { this->n=digits.size(); this->digits=digits; vector<string> result; if(n==0) return result; string temp=""; generate(temp,0,0,result); return result; } void generate(string temp,int step,int size,vector<string>& result){ if(step==n){ result.push_back(temp); return; } //从step位置开始遍历 for(int i=size;i<n;i++){ for(int j=0;j<map[digits[i]-'0'].size();j++){ string pre=temp; temp=temp+map[digits[i]-'0'][j]; generate(temp,step+1,i+1,result); temp=pre; } } } };
    转载请注明原文地址: https://ju.6miu.com/read-1296698.html
    最新回复(0)