A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cqdouble 中级黑马   /  2014-5-26 22:17  /  1436 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就是假如有3个数为1,2, 3,要得到的组合为1,2,3,12,13,23,21,31,32,123,132,213,231,312,321

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
这个  题做过 把字符换数字   import java.util.*;
回复 使用道具 举报
public class Text5
{
        public static void main(String args[])
        {
                String s="123";               //声明一个字符串
               
                mySorts(s);                     //调用方法
        }
       
        private static void mySorts(String s)        //封装一个mySorts方法
        {
                ArrayList<String> list =new ArrayList<String>();    //创建一个数组ArrayList集合
                
            char[] ch = s.toCharArray();          //把字符串变为字符数组
                     
                 for(char c:ch)                                  //用for的高级方法把字符装进集合中
                 list.add(c+"");                       
                                               
                 int len=s.length();                //声明一个变量为字符串的长度
                  
                 int start=0;                      //声明一个零变量
                     
                 for(int l=2;l<=s.length();l++)        //决定字符串的长度的循环
                 {     
                         for(int x=0;x<len;start++,x++)          //在字符串的后面加一个字符的循环
                          {   
                               for(int i=0;i<s.length();i++)                                
                                   list.add(list.get(start)+list.get(i));                     //把末尾加一个字符的字符串装入集合中
                          }
                          len=len*s.length();                       //把多一位字符所能产生的字符串个数赋给原个数                                                        
                 }                                        
                     sort(list);             //调用方法
        }
       
          public static void sort(ArrayList<String> list)        //封装方法
          {                 
                        a:for(int i = 0;i<list.size();i++)        
                        {
                                  String str= new String(list.get(i));     //把集合内的字符一个一个的循环出来变成字符串
                                                          
                                  for(int j = 0;j < str.length();j++)
                                  {                                          
                                         if(str.lastIndexOf(str.substring(j,j+1))!=str.indexOf(str.substring(j,j+1)))     //循环判断每一个字符在字符中第一次出现的位置是否等于最后出现的位置
                                                    continue a;                           //如果不相等说明有重复字符,返回下一个字符串继续循环
                                  }               
                         System.out.println(str) ;           //打出不重复的字符串
                        }
                               
           }
                                                         
}   

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 赞一个!

查看全部评分

回复 使用道具 举报
代码如下:
class Test8
{
        public static void main(String[] args)
    {
                char[] ch = "123".toCharArray();
               
                int i,j,k;
            for(int m=1; m<=ch.length;m++)
             {
             if(m==1)
               {
                 for(i=0;i<ch.length;i++)
                {
                 System.out.println(ch[i]);
                 }
                }
                   if(m==2)
                         {
                             for(i=0;i<ch.length;i++)
                             {
                               for(j=0;j<ch.length;j++)  
                               {
                                if(i==j) continue;
                                System.out.println(ch[i]+""+ch[j]);
                                }
                              }
                         }

                      if(m==3)
                     {
                     for(i=0;i<ch.length;i++)
                       {
                               for(j=0;j<ch.length;j++)
                           {   
                              for(k=0;k<ch.length;k++)
                               {
                              
                               if (i==j) continue;
                               if(i==k) continue;
                               if(j==k) continue;
                              
                               System.out.println(ch[i]+""+ch[j]+""+ch[k]);


                                }
                            }
                         }


                      }
      }
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马