剑指Offer-28

xiaoxiao2021-02-27  151

题目:

输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c 所能排列出来的所有字符串:abc、acb、bac 、bca、cab 和cba 。

实现

// coding = java public class Solution28 { public static void permutation(char[] chars) { // 输入较验 if (chars == null || chars.length < 1) { return; } // 进行排列操作 permutation(chars, 0); } /** * 求字符数组的排列 * * @param chars 待排列的字符串 * @param begin 当前处理的位置 */ public static void permutation(char[] chars, int begin) { // 如果是最后一个元素了,就输出排列结果 if (chars.length - 1 == begin) { System.out.print(new String(chars) + " "); } else { char tmp; // 对当前还未处理的字符串进行处理,每个字符都可以作为当前处理位置的元素 for (int i = begin; i < chars.length; i++) { // 下面是交换元素的位置 tmp = chars[begin]; chars[begin] = chars[i]; chars[i] = tmp; // 处理下一个位置 permutation(chars, begin + 1); } } } public static void main(String[] args) { char[] c1 = {'a', 'b', 'c'}; permutation(c1); System.out.println(); char[] c2 = {'a', 'b', 'c', 'd'}; permutation(c2); } }
转载请注明原文地址: https://www.6miu.com/read-16152.html

最新回复(0)