题解 | #牛名生成器# java
牛名生成器
https://www.nowcoder.com/practice/f82fe408de8f4fbdbc30162d6b3e65bb
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param digits string字符串
* @return string字符串一维数组
*/
String[] dict = { "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
public String[] letterCombinations (String digits) {
// write code here
List<String> result = new ArrayList<>();
int length = digits.length();
char[] buf = new char[length];
Arrays.fill(buf, '\0');
func(digits.toCharArray(), 0, length, buf, result);
return result.toArray(new String[0]);
}
private void func(char[] digits, int index, int length, char[] buf,
List<String> result) {
if (index < length) {
char[] di = dict[digits[index] - '2'].toCharArray();
for (int i = 0; i < di.length; i++) {
buf[index] = di[i];
func(digits, index + 1, length, buf, result);
}
} else {
result.add(new String(buf));
}
}
}
代码使用java编程语言。
该题考察的知识点是递归和字符串处理。
letterCombinations方法接收一个数字字符串作为输入,然后根据每个数字对应的字符集合进行组合,最后返回所有可能的组合结果。通过递归实现对每个数字字符的字符集合的遍历和组合,将结果存储在result向量中。
