求解一个字符串的所有排列 java实现

来源:互联网 发布:淘宝工作室是做什么 编辑:程序博客网 时间:2024/06/06 09:50
import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.TreeSet;/** * Created by dell on 2015/10/1. */public class StringPailieTest {    public static Set<String> strings = new TreeSet<>();    public static void main(String[] args) {        System.out.println(getAllPailie("abcd"));    }    public static Set<String> getAllPailie(String str){        return getAllPailieUnit(str, 0);    }    private static Set<String> getAllPailieUnit(String str, int begin){        if (str.length() - 1 == begin){            strings.add(str.charAt(begin) + "");        }else{            Set<String> set = getAllPailieUnit(str, begin + 1);            AddPailie(set, str.charAt(begin));        }        return strings;    }    private static void AddPailie(Set<String> set, char a){        if (set != null && !set.isEmpty()){            List<String> stringList = new ArrayList<>(set);            set.clear();            for (String str : stringList){               for (int i = 0; i < str.length() + 1; ++i){                   StringBuilder stringBuilder = new StringBuilder(str);                   stringBuilder.insert(i, a);                   set.add(stringBuilder.toString());               }            }        }    }}
0 0