字符串的排列_牛客网

来源:互联网 发布:安卓软件应用 编辑:程序博客网 时间:2024/05/22 00:40

记得全排列这种写法还是在学校图书馆看到的,回溯法中,当初理解了好久。

import java.util.*;public class Solution {    public ArrayList<String> Permutation(String str) {        ArrayList<String> re = new ArrayList<String>();        if (str == null || str.length() == 0) {            return re;        }        HashSet<String> set = new HashSet<String>();        fun(set, str.toCharArray(), 0);        re.addAll(set);        Collections.sort(re);        return re;    }    void fun(HashSet<String> re, char[] str, int k) {        if (k == str.length) {            re.add(new String(str));            return;        }        for (int i = k; i < str.length; i++) {            swap(str, i, k);            fun(re, str, k + 1);            swap(str, i, k);        }    }    void swap(char[] str, int i, int j) {        if (i != j) {            char t = str[i];            str[i] = str[j];            str[j] = t;        }    }}
原创粉丝点击