题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
思路:递归,回溯。
实现代码:
import java.util.*;public class Solution { public ArrayListPermutation(String str) { ArrayList ret = new ArrayList (); if(str == null || str.length() <= 0) return ret; dfs(str.toCharArray(), 0, ret); Collections.sort(ret); return ret; } public void dfs(char[] chs, int i, ArrayList ret) { if(i == chs.length - 1) { ret.add(String.valueOf(chs)); } else { for(int j=i; j