zoukankan      html  css  js  c++  java
  • 排列算法

    package org.example.permandcombine;
    
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    /**
     * @author xianzhe.ma
     * @date 2021/11/3
     */
    
    public class Permutation {
    
        public static ArrayList<String> Permutation(String str) {
            int length = str.length();
            List<String> inputList = new ArrayList<>();
            for (int i = 0;i<length;i++) {
                char c = str.charAt(i);
                String temp = String.valueOf(c);
                inputList.add(temp);
            }
    
            String[] array = new String[length];
            inputList.toArray(array);
    
            ArrayList<String> result = new ArrayList<>();
    
            doPerm(array, 0, length, result);
            Set<String> set = new HashSet<>();
            set.addAll(result);
    
            ArrayList<String> result2 = new ArrayList<>();
            result2.addAll(set);
            return result2;
    
        }
    
        public static void main (String[] args) {
            String str = "ABC";
    
            ArrayList<String> list = Permutation(str);
            for (String str1 : list) {
                System.out.println(str1);
            }
        }
    
        public static void doPerm(String[] array, int start, int end, ArrayList<String> result) {
    
            if (start == end) {
                int size = array.length;
                StringBuilder stringBuilder = new StringBuilder();
                for (int i=0;i<size;i++) {
                    stringBuilder.append(array[i]);
                }
    
                result.add(stringBuilder.toString());
                return;
            }
    
            for (int i= start;i<end;i++) {
                swap(array, start, i);
                doPerm(array,start+1,end, result);
                swap(array, start, i);
            }
    
        }
    
        public static void swap(String[] array, int i, int j) {
            String temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    }
  • 相关阅读:
    windows server 2019安装
    python 求相关系数
    MySQL的Sleep进程占用大量连接解决方法
    mysql show processlist分析
    mysql5.6常用查询sql
    使用exe4j将java项目打成exe执行程序
    MediaWIKI部署流程
    谈谈Activiti中流程对象之间的关系
    EhCache RMI 分布式缓存/缓存集群
    Tomcat8安装, 安全配置与性能优化
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15751969.html
Copyright © 2011-2022 走看看