字符串的排列

题目描述

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

输入描述

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

思路

递归法,问题转换为先固定第一个字符,求剩余字符的排列;求剩余字符排列时跟原问题一样。
(1) 遍历出所有可能出现在第一个位置的字符(即:依次将第一个字符同后面所有字符交换);
(2) 固定第一个字符,求后面字符的排列(即:在第1步的遍历过程中,插入递归进行实现)。

7578108_1499250116235_8F032F665EBB2978C26C4051D5B89E90.png
个人解法
import java.util.*;
public class Solution {
    public ArrayList Permutation(String str) {
        ArrayList list=new ArrayList<>();
        if(str.length()==0){
           return list;
       }
       if(str.length()==1){
           list.add(str);
           return list;
       }
        
        getList(list,0,str.toCharArray());
        Collections.sort(list);//排列
        return list;
    }
    
    public void getList(ArrayListlist,int i,char c[]){
        
        if(i

你可能感兴趣的:(字符串的排列)