进击的愤怒 2012-07-13 10:02
浏览 806
已采纳

用Java实现全排列的输出

前几天去笔试的题目,没做出来。

有1,2,2,3,4,5几个数字(6个)。用Java实现他们的全排列输出。

要求:4不在第3位,3和5不挨着。

求助。

  • 写回答

2条回答 默认 最新

  • iteye_18271 2012-07-13 17:15
    关注

    private Set set =new HashSet();
    //1,2,2,3,4,5 全排列

    //4不在第3位,3和5不挨着
    public static void main(String[] args) {
    // int tt[]={1,2,2,3,4,5};
    // 选择排列的位置
    //System.out.println(new ConnectionSort().prefix("abcwerwrwqrewqr","abfsdfwer"));
    String a="122345";
    new ConnectionSort().fullArray(a,"",0);
    }
    public void fullArray(String a,String para,int k)
    {

    String result="";
    int l=a.length();

        StringBuilder  build=new StringBuilder();
        build.append(para);
        result=build.toString();
    
        char ch=a.charAt(k);
        String temp=result; 
        for(int i=0;i<=k;i++){  
                 result=insertStr(temp,i,ch);   
                 if(k < l-1)
                    fullArray(a,result,k+1); 
                 if(k+1 == l) //判断组装字符串完成
                 { 
                    int tem=set.size();
                    set.add(result);
                    char  t1=result.charAt(3);
                    if(t1=='4')
                    {
                        continue;
                    }
                    if("35".equals(result.split("35")) || "53".equals(result.split("53")))
                    {
                        continue;
                    }
                    if(set.size()>tem)
                    {
                        continue;
                    }
                    System.out.println(result);
                 }
        }
    }
    /**
     * 插入字符,在第key个位置添加字符
     * @param str
     * @return
     */
    public  String  insertStr(String str,int key,char ch){
    
        StringBuilder  builder=new StringBuilder();
         int l=str.length();
         if(key==l)  // 在最后一个位置添加字符ch
         {
             builder.append(str);
             builder.append(ch);
         }else{
             builder.append(str.substring(0, key));
             builder.append(ch);
             builder.append(str.substring(key));
         }
         return  builder.toString();
    } 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘