字符串的排列

字符串的排列

http://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7

递归求解

import java.util.*;
public class Solution {
    ArrayList<String> res = new ArrayList<String>();
    public ArrayList<String> Permutation(String str) {
        if (str == null || str.length() == 0) {
            return res;
        }
        char[] c = str.toCharArray();
        find(c, 0);
        // 字典序
        Collections.sort(res);
        return res;
    }
    public void find(char[] c, int index) {
        if (index >= c.length) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < c.length; i++) {
                sb.append(c[i]);
            }
            String t = sb.toString();
            // 去重
            if (!res.contains(t)) {
                res.add(t);
            }
        }
        for (int i = index; i < c.length; i++) {
            swap(c, i, index);
            find(c, index + 1);
            swap(c, i, index);
        }
    }
    public void swap(char[] c, int i, int j) {
        char t = c[i];
        c[i] = c[j];
        c[j] = t;
    }
}
全部评论

相关推荐

赏个offer求你了:友塔HR还专门加我告诉我初筛不通过😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务