zoukankan      html  css  js  c++  java
  • Java中输入字符的排列以及按从小到大的顺序输出

    今天笔试,遇到一个问题,大意就是输入一行字符,例如a b c ,按从小到大的顺序输出它们排列而成的字符串,输出就是abc acb bac bca cba cab。求这个程序怎么实现。
      其实这个题很简单,主要涉及到两个知识点:一个就是字符之间的排列;另外一个就是它们的排序。
      可以这样想:固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列求好之后,我们把第一个字符a和后面的b交换,得到bac;接着我们固定第一个字符b,求后面两个字符ac的排列。现在是把c放到第一位置的时候了。记住前面我们已经把原先的第一个字符a和后面的b做了交换,为了保证这次c仍然是和原先处在第一位置的a交换,我们在拿c和第一个字符交换之前,先要把b和a交换回来。在交换b和a之后,再拿c和处在第一位置的a进行交换,得到cba。我们再次固定第一个字符c,求后面两个字符b、a的排列。程序如下:
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    
    
    public class StringConbination {
    
        /**
         * @param args
         */
        public static   void arrangeSequence(char[] strArr,int i){
            char temp;
            ArrayList<String> list = new ArrayList<String>();
            if(strArr == null || i> strArr.length|| i<0){
                return;
            }
            else if(i == strArr.length){
                //System.out.println(strArr);
                list.add(String.valueOf(strArr));//将得到的组合存进ArrayList中
            }
            else{
                for(int j=i;j<strArr.length;j++){
                    temp = strArr[j];
                    strArr[j] = strArr[i];
                    strArr[i] = temp;
                    arrangeSequence(strArr,i+1);//递归调用
                    temp = strArr[j];
                    strArr[j] = strArr[i];
                    strArr[i] = temp;
                }
            }
            for(int m=0;m<list.size();m++){
                System.out.println(list.get(m));
            }
        }
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str = sc.nextLine();
            char strArr[] = str.toCharArray();
            Arrays.sort(strArr);
            arrangeSequence(strArr,0);
        }
    
    }

    输入:cab,得到的结果如下:
    输出的结果

    但现在有个问题就是,当输入的字符有空格是,例如输入:c a b 时,得到的结果会发生如下的变化:
    这里写图片描述
    因此在获取到输入的这一行字符后,要进行空格的去除,只需要在

    String str = sc.nextLine();

    后面加上去除空格就行了

    str = str.replaceAll(" ","");

    此时的结果为:
    这里写图片描述

  • 相关阅读:
    游标第一次应用
    HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
    npoi导出excel(模板)插入图片,文本只读,不可以修改
    npoi导出excel(模板)
    iis7 发布mvc 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容
    如何成为一个糟糕的程序员
    Mutiselect下拉复选框(保存和设置默认选中项)
    Android UI 绘制过程浅析(三)layout过程
    Android UI 绘制过程浅析(二)onMeasure过程
    [EventBus源码解析] 订阅者处理消息的四种ThreadMode
  • 原文地址:https://www.cnblogs.com/cmderq/p/9130844.html
Copyright © 2011-2022 走看看