27、字符串的排列

题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

这题一开始忽视了要按字母顺序打印。不百度真的记不住char[]转String、Arrays.sort、substring()等细节~

import java.util.*;
public class Solution {
    public ArrayList Permutation(String str) {
        
        ArrayList ret = new ArrayList<>();
        if(str==null){
            return ret;
        }
        if(str.length()==1){
            ret.add(str);
            return ret;
        }
        
        //题目要求按字母顺序打印,需先排序
        str = strSort(str);
        Set set = new HashSet<>();
        
       for(int i=0; i list = Permutation(sb.substring(1,sb.length()));
           for(String s: list){
               ret.add(head+s);
           }
       }
        return ret;
    }
    
    public String strSort(String str){
        char[] chars = str.toCharArray();
        Arrays.sort(chars);
        return String.valueOf(chars);
    }
}

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