进击的愤怒 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 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler