题解 | #牛名生成器# 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
向量中。