大厂面试:获取字符串的可重复使用其中所有字符的全排列

一、概念
现有一个字符串,要打印出该字符串中可重复使用该字符串中的所有字符的全排列。例如输入字符串ab,则打印出由字符a、b所能排列出来的可重复使用所有字符的所有字符串aa、ab、ba、bb。
相当于每个位置都可以选择字符数组中的任何一个字符。
可以基于递归算法来解决这个问题。

二、代码

public class Permutation {
    public static void main(String[] args) {
        char[] array = {'a', 'b'};
        //调用全排列函数
        permutation(new char[array.length], array, 0);
    }
    /**
     * 调用全排列函数
     * 第一个参数:临时存储字符数组,大小和入参array长度一致
     * 第二个参数:入参数组
     * 第三个参数:数组起始索引,从0开始
     */
    public static void permutation(char[] buf, char[] array, int index) {
        //处理到入参数组的最后一个位置后,进行输出打印并使递归返回
        if (index == array.length) {
            for (int i = 0; i < array.length; ++i) {
                System.out.print(buf[i]);
            }
            System.out.println();
            return;
        }
        for (int i = 0; i < array.length; i++) {
            //从索引位置len开始赋值给临时字符数组
            buf[index] = array[i];
            //索引位置加1,继续递归
            permutation(buf, array, index + 1);
        }
    }
}


致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享。

若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢。您的支持是我们为您提供帮助的最大动力。

相关推荐

  1. 算法:删除字符串所有相邻重复

    2024-04-13 19:38:05       66 阅读
  2. LeetCode1047:删除字符串所有相邻重复

    2024-04-13 19:38:05       44 阅读
  3. Leetcode 1047:删除字符串所有相邻重复

    2024-04-13 19:38:05       41 阅读
  4. 大厂面试:二叉搜索树如何获取其中第k小结点

    2024-04-13 19:38:05       40 阅读
  5. Leetcode459:重复字符串

    2024-04-13 19:38:05       64 阅读
  6. 【算法】字符串排列

    2024-04-13 19:38:05       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 19:38:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 19:38:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 19:38:05       82 阅读
  4. Python语言-面向对象

    2024-04-13 19:38:05       91 阅读

热门阅读

  1. C++ list

    2024-04-13 19:38:05       33 阅读
  2. location.href和 window.location的区别有这些!

    2024-04-13 19:38:05       33 阅读
  3. 无重复字符的最长子串

    2024-04-13 19:38:05       33 阅读
  4. 蓝桥杯2021年第十二届省赛 C&C++ 研究生组2.0

    2024-04-13 19:38:05       37 阅读
  5. 安卓Android.nfc读卡

    2024-04-13 19:38:05       33 阅读
  6. 执行 npm run serve 时发生了什么?

    2024-04-13 19:38:05       37 阅读
  7. 【C++函数】 scanf 与 printf 函数的标识符

    2024-04-13 19:38:05       40 阅读
  8. ORACLE发送邮件

    2024-04-13 19:38:05       39 阅读
  9. 网络工程技术课堂笔试

    2024-04-13 19:38:05       36 阅读
  10. vue3中封装table表格

    2024-04-13 19:38:05       33 阅读