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

全部评论

相关推荐

03-21 11:31
已编辑
门头沟学院 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务