zoukankan      html  css  js  c++  java
  • 字符串的全排列JAVA实现

    package com.kpp;
    
    /**
     * 求字符串的全排列
     * 递归的思想
     * 比如  abcde  先求出abcd的全排列,然后将e分别插入全排列的5个位置
     * a 全排列  a
     * ab 全排列  ab ba
     * abd 全排列即是  cab acb abc cba bca bac
     * 
     * @author kpp
     *
     */
    public class QuanPaiLie {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str = "abcde";
            
            //System.out.println(str.substring(0, 2));
            String[] rs = getQuanPaiLie(str);
            if(rs != null){
                int count = 0;
                for(int i = 0;i < rs.length;i++){
                    if(rs[i]!=null){
                        System.out.println(rs[i]);
                        count++;
                    }
                    
                }
                System.out.println("count: "+count);
            }
            
        }
        /**
         * 求一个字符串的全排列
         * @param str
         * @return
         */
        public static String[] getQuanPaiLie(String str){
            String[] rs = new String[1000];
            
            if(str == null||str.isEmpty()){
                return null;
            }
            int strLen = str.length();
            if(strLen == 1){
                rs[0] = str;
                
            }else if(strLen == 2){
                rs[0] = str;
                rs[1] = ""+str.charAt(1)+str.charAt(0);
                
            }else if(strLen > 2){
                char c = str.charAt(strLen-1);
                String strBefore = str.substring(0,strLen-1);
                String[] tmpRsArr = getQuanPaiLie(strBefore);
                int count = 0;
                for(int i = 0;i < tmpRsArr.length;i++){
                    
                    String tmpRs = tmpRsArr[i];
                    if(tmpRs != null){
                        for(int k = 0;k < tmpRs.length()+1;k++){
                            rs[count++] = tmpRs.substring(0,k)+c+tmpRs.substring(k,tmpRs.length());
                        }
                    }
                    
                    
                    
                }
                
            }
            
            return rs;
        }
    
    }
  • 相关阅读:
    PGL:Paddle带你走进图学习
    Improving the way neural networks learn
    文本语义匹配Simnet模型
    图卷积神经网络(GCN)
    git revert
    vi/vim多行注释和取消注释、复制粘贴
    谷歌之多任务学习模型MMoE
    阿里CVR预估模型之ESMM
    知识图谱简介
    CTR预估--Deep Interest Network
  • 原文地址:https://www.cnblogs.com/kangpp/p/4385684.html
Copyright © 2011-2022 走看看