Java算法--百度真题

第一道题

给定一个字符串str,和一个正数k

str子序列的字符种数必须是k种,

返回有多少子序列满足这个条件

已知str中都是小写字母

//递归
    public static int way(String str, int k) {
        int[] array = new int[26];
        for(char ch : str.toCharArray()) {
            int temp = (int) ch;
            temp = temp % 97;
            array[temp] ++;
        }

        return process(array, 0, k);

    }

    public static int process(int[] array, int index, int k) {
        if(index == array.length) {
            return k == 0 ? 1 : 0;
        }
        int p1 = process(array, index + 1, k);
        int p2 = 0;
        if(array[index] != 0 && k > 0) {
            p2 = ((1 << array[index]) - 1) * process(array, index + 1, k - 1);
        }
        return p1 + p2;
    }

    //缓存
    public static int way1(String str, int k) {
        int[] array = new int[26];
        for(char ch : str.toCharArray()) {
            int temp = (int) ch;
            temp = temp % 97;
            array[temp] ++;
        }

        int[][] dp = new int[26 + 1][k + 1];
    

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

八股文+场景题+算法真题 文章被收录于专栏

Java全新整理八股文 + 场景题 + 算法 精心设计,面试命中率超过80% 专栏优势: 1、问题和答案已经整理到位,答案更专业,可以直接回答,不需要额外总结! 2、场景题讲解清晰,适用于大部分场景的项目,并且持续更新中 3、分享学习心得【知识点的广度和深度,算法有哪些坑,如何准备面试等等】

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务