题解 | #字符串的排列#
字符串的排列
http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
import java.util.ArrayList; public class Solution { public ArrayList Permutation(String str) { ArrayList list = new ArrayList<>(); if(str.equals("")) return list; addStr(list, str, "");
//两个for循环是为了去重 for(int i = 0;i < list.size();i++) { for(int j = 0;j < list.size();j++) { if(i != j) if(list.get(j).equals(list.get(i))) list.set(j, ""); } }
for(int i = 0;i < list.size();i++) {
if(list.get(i).equals("")) {
list.remove(i);
i--;
}
}
return list;
}
public void addStr(ArrayList<String> list,String str,String newStr) {
if(str.length() == 1) {
list.add(newStr + str);
return;
}
char[] cs = str.toCharArray();
for(int i = 0;i < str.length();i++) {
addStr(list, tostr(cs,i), newStr + cs[i]);
}
}
public String tostr(char[] cs,int index) {
String s = "";
for(int i = 0;i < cs.length;i++) {
if(i != index) s += cs[i];
}
return s;
}
}