全字符排列
求出整个字符串的排列以及字典序排列。第一步找出所有的,第二步排序。
可以利用递归的思想,分成第一个字符和后面字符的全排列。求整个字符串的排列,第一步就是把第一个字符和后面的所有字符交换一次,第二步是递归求解后面字符串的全排列。
拿到一个字符串,首先将第一个与第二个交换,然后将交换后的传入继续交换接下来的,也就是此时第一个已经固定了,求的是剩下的字符串的全排列,需要知道一个起始点。递归回来之后再将这个换回来,继续令第一个字符和第三个字符交换。。。
怎么判断是否重复,那就要在交换前判断这个字符是否已经出现过了,如果出现过了则不进行下面的操作。可以用一个set来保存。记得交换要从第一个和第一个开始交换,把第一个字符也算进set里。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Collections;
public class Solution {
ArrayList<String> res=new ArrayList<String>();
public ArrayList<String> Permutation(String str) {
if