剑指offer:字符串的排列
2017-08-08 09:59
435 查看
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
方法1:
import java.util.ArrayList;
import java.util.TreeSet;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> strList=new ArrayList<>();
if(str==null||str.length()==0) return strList;
char []chars=str.toCharArray();
TreeSet<String> temp=new TreeSet<String>();
Permutation(chars,0,temp);
strList.addAll(temp);
return strList;
}
public void Permutation(char []chars,int begin,TreeSet<String> result){
if(chars==null||chars.length==0||begin<0||begin>chars.length-1)return;
if(begin==chars.length-1)
result.add(String.valueOf(chars));
else{
for(int i=begin;i<chars.length;i++){
swap(chars,begin,i);
Permutation(chars,begin+1,result);
swap(chars,begin,i);
}
}
}
public void swap(char []chars,int a,int b){
char t=chars[a];
chars[a]=chars[b];
chars[b]=t;
}
}
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
方法1:
import java.util.ArrayList;
import java.util.TreeSet;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> strList=new ArrayList<>();
if(str==null||str.length()==0) return strList;
char []chars=str.toCharArray();
TreeSet<String> temp=new TreeSet<String>();
Permutation(chars,0,temp);
strList.addAll(temp);
return strList;
}
public void Permutation(char []chars,int begin,TreeSet<String> result){
if(chars==null||chars.length==0||begin<0||begin>chars.length-1)return;
if(begin==chars.length-1)
result.add(String.valueOf(chars));
else{
for(int i=begin;i<chars.length;i++){
swap(chars,begin,i);
Permutation(chars,begin+1,result);
swap(chars,begin,i);
}
}
}
public void swap(char []chars,int a,int b){
char t=chars[a];
chars[a]=chars[b];
chars[b]=t;
}
}
相关文章推荐
- 剑指offer-字符串的排列
- 剑指offer(27)—字符串的排列
- 【剑指offer】4.4分解让复杂问题简单化——面试题28:字符串的排列
- 剑指offer 面试题28:字符串的排列
- 剑指offer 28字符串全排列
- 【剑指offer】之字符串的排列
- 剑指Offer面试题:26.字符串的排列
- 【剑指offer】字符串的排列
- 【剑指Offer】字符串的排列
- 剑指offer 字符串的排列
- 剑指Offer——面试题28:字符串的排列
- 剑指offer-27.字符串的排列
- 剑指offer:(28)分解让复杂问题简单化 :字符串的排列
- [剑指Offer] 27.字符串的排列
- 剑指offer 面试题28 字符串全排列
- 剑指offer-题28:字符串的排列
- 剑指offer28--字符串的排列
- 【剑指Offer学习】【面试题28 :字符串的排列】
- 剑指offer 编程题(26):字符串全排列
- 码农小汪-剑指Offer之25 -字符串的排列(全排列)