電話號碼的字母組合

2022-07-31 17:12:13 字數 1411 閱讀 2434

題目:

給定乙個僅包含數字2-9的字串,返回所有它能表示的字母組合。

給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。

示例:

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

說明:儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。

看到這個題,我們來分析一下:

1.給定的數字字串中,每個元素也就是數字有自己對應的字母組合是固定的,因此,可以用map,

2.返回的佇列中就是數字對應的字元的排列組合,因此,可以用巢狀迴圈。

**如下:

class solution 

if(digits.length() == 0)

mapmap = new hashmap<>();

map.put('2',"abc");

map.put('3',"def");

map.put('4',"ghi");

map.put('5',"jkl");

map.put('6',"mno");

map.put('7',"pqrs");

map.put('8',"tuv");

map.put('9',"wxyz");

char chars = digits.tochararray();

listres = new arraylist<>();

res.add("");

for(char ch : chars)

}res = list;

}return res;}}

但是,在我去找資料時,發現了更好的答案,也就是大牛的解法,用回溯法來解決:

**如下:

public listlettercombinations(string digits)  

string dict = ;

int digiint = new int[digits.length()];

for (int i = 0; i < digits.length(); i++)

combi(digiint, 0, dict, res, oneres);

return res;

} public void combi(int digits, int n, string dict, listres, string oneres)

for (int j = 0; j < dict[digits[n]].length(); j++)

}

電話號碼的字母組合

給乙個數字字串,每個數字代表乙個字母,請返回其所有可能的字母組合。下圖的手機按鍵圖,就表示了每個數字可以代表的字母。樣例給定 23 返回 ad ae af bd be bf cd ce cf 注意以上的答案是按照詞典編撰順序進行輸出的,不過,在做本題時,你也可以任意選擇你喜歡的輸出順序。class ...

電話號碼的字母組合

給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映關係如下 示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 注 輸出字串順序任意 我的 public class lettercombinationsofaphonenumber public...

電話號碼的字母組合

這是一道我刷題時遇到的乙個題目,很簡單,輸入數字,輸出這些數字構成的字元排列組合 由可以看出。given a string containing digits from 2 9 inclusive,return all possible letter combinations that the nu...