Leetcode全排列

全排列

package 算法;

import java.util.ArrayList;
import java.util.List;

public class 全排列 {

    public static void main(String[] args) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        List<Integer> list = new ArrayList<>();

        int[] nums = {1,2,3,4};
        dfs(res,list,nums);

        for (List<Integer> re : res) {
            System.out.println(re);
        }

    }

    public static void dfs(List<List<Integer>> res, List<Integer> list, int[] nums) {
        if (list.size() == nums.length) {
            res.add(new ArrayList<>(list));
        }

        for (int i = 0; i < nums.length; i++) {
            if (list.contains(nums[i]))
                continue;
            list.add(nums[i]);
            dfs(res, list, nums);
            list.remove(list.size() - 1);
        }
    }
}

回文

package 算法;

public class 回文 {
    public static void main(String[] args) {
        String s = "@sasdd,,,sas";
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if((s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') || (s.charAt(i) >= 'a' && s.charAt(i) <= 'z')) {
                str.append(s.charAt(i));
            }
        }

        int L = 0;
        int R = str.length() - 1;
        boolean make = true;
        while (L <= R) {
            if (str.charAt(L) != str.charAt(R)) {
                System.out.println("false");
                make = false;
                break;
            }
            L++;
            R--;
        }
        if (make) {
            System.out.println("true");
        }
    }
}

子集 

package 算法;

import java.util.ArrayList;
import java.util.List;

public class 子集 {

    public static void main(String[] args) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        List<Integer> list = new ArrayList<>();

        int [] nums = {1,2,3,4};

        dfs(res,list,nums,0);

        for (List<Integer> re : res) {
            System.out.println(re);
        }

    }

    public static void dfs(List<List<Integer>> res, List<Integer> list, int[] nums, int start) {
        //if (start >= nums.length) return;

        for (int i = start; i < nums.length; i++) {
            list.add(nums[i]);
            res.add(new ArrayList<Integer>(list));
            dfs(res, list, nums,i+1);
            list.remove(list.size() - 1);
        }
    }
}

posted @   金鳞踏雨  阅读(14)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示