递归总是让人脑瓜疼,记录一下,方便日后翻阅

看了好多的题解,依旧很迷糊!哎呀妈呀,脑瓜疼!!!

import java.util.ArrayList;
import java.util.Collections;
public class Solution {
    public ArrayList<String> Permutation(String str) {
        ArrayList<String> ans = new ArrayList<>();
        if (str != null || str.length() > 0) {
            char[] chars = str.toCharArray();
            permutation(chars, 0, ans);
            Collections.sort(ans);
        }
        return ans;
    }

    private void permutation(char[] chars, int i, ArrayList<String> ans) {
        int len = chars.length;
        if (i != len - 1){
            for (int j = i; j < len; j++) {
                swap(chars, j, i);
                permutation(chars, i + 1, ans);
                swap(chars, j, i);
            }
        }
        else {
            String val = String.valueOf(chars);
            if (!ans.contains(val))
                ans.add(val);
        }
    }

    private void swap(char[] chars, int j, int i) {
        char temp = chars[i];
        chars[i] = chars[j];
        chars[j] = temp;
    }
}
全部评论

相关推荐

影04714:把图书管理系统那个项目经验内容适当的减少掉,然后改成据为己有不要说团队项目,因为图书管理系统这类常见的谁来了都能独立写出来,提问能圆过来即可
点赞 评论 收藏
分享
求个付费实习岗位:这种就是吃满时代红利又没啥技术水平,只能靠压力学生彰显优越感的老登,别太在意了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务