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;
        }
    }
  • 相关阅读:
    Python基础教程:多线程运行带多个参数的函数
    Python基础教程:list相关操作
    python字典教程:setdefault方法和get方法
    Python 异常处理集合
    python基础教程:5个带key的python内置函数
    python操作Excel的5种方式
    Python3压缩和解压缩实现
    jenkins 分布式配置主从节点
    CentOS7 free字段含义
    nginx配置https
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15751969.html
Copyright © 2011-2022 走看看