LeetCode_81_LetterCombinationsOfAPhoneNumber


1. question: 电话号码的字母组合(中等)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/letter-combinations-of-a-phone-number

示例

示例 1:

1
2
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

1
2
输入:digits = ""
输出:[]

示例 3:

1
2
输入:digits = "2"
输出:["a","b","c"]

提示:

1
2
0 <= digits.length <= 4
digits[i] 是范围 ['2', '9'] 的一个数字。

2. answers

这道题和组合题是类似的,只不过这里限制了集合中每个位置的取值(数字代表的字符),而集合的元素个数就是字符串的长度。

因此,同样可采取回溯的方法,第一个字符有三种选择,第二个字符有三种选择…,依次递归下去,直到满足长度要求,之后再回溯,返回倒数第一个字符的取值区间,循环取值等等。代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class Solution_0080 {

// 给定二维数组,2-9数字,表示数组的下标,里面的一维数组表示所代表的字符。
public char[][] encode = {{}, {}, {'a', 'b', 'c'}, {'d', 'e', 'f'}, {'g', 'h', 'i'}, {'j', 'k', 'l'},
{'m', 'n', 'o'}, {'p', 'q', 'r', 's'}, {'t', 'u', 'v'}, {'w', 'x', 'y', 'z'}};

public List<String> result = new ArrayList<>();
public String path = "";

public void getPath(String digits, int startIndex) {

if(path.length() == digits.length()) {

result.add(path + "");

return;
}

char[] chars = digits.toCharArray();

// 获取String中下标为startIndex字符所表示的数字
int index = chars[startIndex] - 48;

// 每个字符数组所选取的字符,有如下选择
for (int i = 0; i < encode[index].length; i++) {

path = path + encode[index][i];

// 进行字符串的下一位字符
getPath(digits, startIndex + 1);

// 回溯
path = path.substring(0, path.length() - 1);
}
}

public List<String> letterCombinations(String digits) {

if(digits.length() > 0)
getPath(digits, 0);

return result;
}

public static void main(String[] args) {

String digits = "2";

Solution_0080 s = new Solution_0080();

List<String> result = s.letterCombinations(digits);

for(String str: result)
System.out.println(str);

}
}

3. 备注

参考力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 (leetcode-cn.com)代码随想录 (programmercarl.com)


文章作者: 浮云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 浮云 !
  目录