zoukankan      html  css  js  c++  java
  • 递归_变位字

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Anagram {
        static int size;//变位字有的总字符个数
        static int count;//变位字变化之后共有多少个
        static char[] arrChar=new char[100];
        public static void main(String[] args) throws IOException {
            System.out.print("输入 一个word:");
            String word=getString();
            size=word.length();
            count=0;
            for(int j=0;j<size;j++) {
                arrChar[j]=word.charAt(j);//将字符串转换为数组
            }        
            doAnagram(size);
    
        }
        
        private static void doAnagram(int newSize) {
            if(newSize==1)
                return;
            for(int j=0;j<newSize;j++) {            
                if(newSize==2)
                    displayWord();//打印(当只剩下两个数时,就可以打印数组)            
                doAnagram(newSize-1);//先让数据量为n-1的下标为n-1以后的数组变位            
                rotate(newSize);//转动当前数组(就是将数组中的每一个往前移动一位,第一个就移动到最后一个位置)            
            }        
        }
        /*
         * 2345
         * 第一层     第二层   第三层 
         * 2      3    4 
         *             5 
         *        4    5
         *             3
         *        5    3
         *             4
         * 3      4    5
         *             2
         *        5    2
         *             4
         *        2    4
         *             5
         * 4      5    2
         *             3
         *        2    3
         *             5
         *        3    5
         *             2
         * 5      2    3
         *             4
         *        3    4
         *             2
         *        4    2
         *             3
         * 
         * 
         * 
         * 
         * 
         * 
         * 
         */
    
        private static void rotate(int newSize) {
            int j;
            int position=size-newSize;//需要转动的位置
            //转动一次
            char temp=arrChar[position];
            for(j=position+1;j<size;j++) {
                arrChar[j-1]=arrChar[j];
            }
            arrChar[j-1]=temp;
            
        }
        private static void displayWord() {
            if(count<99)
                System.out.print(" ");
            if(count<9)
                System.out.print(" ");//当count的数值为一位数,两位数,三位数时,输出都会影响排版,所以需要在一位数的count前面加上一个空格,两位数前面加上一个空格。最后数据显示的都在同一条线上
            System.out.print(++count+" ");
            for(int j=0;j<size;j++)
                System.out.print(arrChar[j]);
            System.out.print("  ");
            System.out.flush();
            if(count%6==0)
                System.out.println();
            
        }
    
    
        public static String getString() throws IOException {
            InputStreamReader inputStreamReader=new InputStreamReader(System.in);
            BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
            return bufferedReader.readLine();
    
        }
        
    
    }
  • 相关阅读:
    Dynamics CRM
    Cordova
    《linux就该这么学》第二节课,安装红帽7,基础命令至2.3小节的笔记
    《linux就该这么学》开课,linux之路新开始
    《linux就该这么学》找到一本不错的Linux电子书,《Linux就该这么学》。
    mongodb3.4.5用http访问28017端口
    mongodb安装步骤
    linux安装docker
    centos 遇到/dev/mapper/cl-root 100% 解决方法
    本机ping不通虚拟机,但虚拟机可以ping通本机
  • 原文地址:https://www.cnblogs.com/S-Mustard/p/8098007.html
Copyright © 2011-2022 走看看