LeetCode 17.电话号码的字母组合
电话号码的字母组合
给定一个仅包含数字2~9
的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。
给出数字到字母的映射如下(与电话按键相同)。注意1
不对应任何字母。
输入:digits = "23" |
方法:回溯
算法思路:
-
确定递归函数的返回值以及参数
除了题中输入的
digits
,还需要定义参数index
来记录遍历到digits
的第几个数字了,以及需要创建一个数组numString
用来记录每个数字对应的字母。String[] numString = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
-
确定终止条件
当
index
等于输入数字的个数digits.size()
时,收集结果,结束递归。if(index == digits.length()){
result.add(sb.toString());
return;
} -
单层搜索的过程
读取
index
指向的数字,并找到对应的字符集,然后使用for
循环来处理这个字符集(遍历字符集的每个字母)。for(int i = 0; i < str.length(); i++){
sb.append(str.charAt(i));
backTracking(digits, numString, index + 1);
sb.deleteCharAt(sb.length() - 1);
}
代码实现:
class Solution { |
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Abacteria的学习小站!