字符串的排列
题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
实现语言:Java
import java.util.ArrayList; import java.util.HashSet; import java.util.Collections; public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String> res=new ArrayList<String>(); if(str.isEmpty()||str.length()==0){ return res; } HashSet<String> set=new HashSet<String>(); helper(set,str.toCharArray(),0); res.addAll(set); Collections.sort(res); return res; } private void helper(HashSet<String> set,char[] s,int k){ if(k==s.length){ set.add(new String(s)); return; } for(int i=k;i<s.length;++i){ swap(s,i,k); helper(set,s,k+1); swap(s,i,k); } } private void swap(char[] s,int i,int j){ char tmp=s[i]; s[i]=s[j]; s[j]=tmp; } }