`
buerkai
  • 浏览: 167202 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

比如输入字符串 "1234 ", 输出所有的不重复的24个组合:1234,1243,1324,1342。。。。。。,

J# 
阅读更多
//比如输入字符串 "1234 ",   输出所有的不重复的24个组合:1234,1243,1324,1342。。。。。。,
//输入字符串 "123 ",   输出所有的不重复的9个组合:123,132,213,。。。。。。







public void intput(String inputstr ){
char flag='^';
if(inputstr==null){
return;
}
if(inputstr.length()<=1){
System.out.println(inputstr);
return;
}

int num_l=inputstr.length();
StringBuffer tempstr=new StringBuffer(inputstr);

for(int i=0;i<num_l;i++){

for(int j=1;j<num_l;j++){
if( ((i!=j))&&(tempstr.charAt(i)==tempstr.charAt(j))){
tempstr.setCharAt(i, flag);
}
}
}
inputstr=tempstr.toString();
//System.out.println("1111:"+inputstr);
tempstr.delete(0, tempstr.length());
for(int i=0;i<inputstr.length();i++){
if(inputstr.charAt(i)!=flag){
tempstr.append(inputstr.charAt(i));
}
}
inputstr=tempstr.toString();
System.out.println("inputstr:"+inputstr);
//num_l=inputstr.length()-1;
//input2(inputstr,inputstr.length());
char temp_chars[]=inputstr.toCharArray();
long time1=System.currentTimeMillis();
System.out.println(" 排序个数:"+temp_chars.length+" 当前时间:"+time1);
perm(temp_chars,0,temp_chars.length-1);
//System.out.println("V"+temp_vector.size());
System.out.println("所有时间:"+(System.currentTimeMillis()-time1));



}

public static void perm(char[] buf,int start,int end){
        if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
           for(int i=0;i<=end;i++){
               // System.out.print(buf[i]);
            }
           // System.out.println();
        }
        else{//多个字母全排列
            for(int i=start;i<=end;i++){
                char temp=buf[start];//交换数组第一个元素与后续的元素
                buf[start]=buf[i];
                buf[i]=temp;
               
                perm(buf,start+1,end);//后续元素递归全排列
               
                temp=buf[start];//将交换后的数组还原
                buf[start]=buf[i];
                buf[i]=temp;
            }
        }
    }


不能输入^符号
注掉输出语句
当排列数为10:所用时间125;
当排列数为11:所用时间1344;
当排列数为12:所用时间16625;
当排列数为13:所用时间就很长了,不想等了。
分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    世界500强面试题.pdf

    1.5.7. 输入一个表示整数的字符串,把该字符串转换成整数并输出.............. 118 1.5.8. 给出一个数列,找出其中最长的单调递减(或递增)子序列..............121 1.5.9. 四对括号可以有多少种匹配排列方式........

    freemarker总结

    有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...

    正则表达式

    第二个字符 "$" 是一个特殊字符,它所匹配的是字符串的结尾.所以正则表达式 /s$/ 匹配的就是以字母 "s" 结尾 的字符串. 1.直接量字符 我们已经发现了,在正则表达式中所有的字母字符和数字都是按照字面意思与...

    Java面试宝典2010版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    PT80-NEAT开发指南v1.1

    第二章 PT80 开发入门 .................................................................................................................................. 2 开发环境搭建 ....................................

    editplus 代码编辑器html c++ jsp css

    如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串 a. 选择要操作的行 b. 编辑-格式-删除行注释 c. 在弹出对话框里面输入要清除的行首字符,确定 【4】正则表达式应用...

    最新Java面试宝典pdf版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试笔试资料大全

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    java面试题大全(2012版)

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试宝典-经典

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试宝典2012版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    JAVA面试宝典2010

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试宝典2012新版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    java面试宝典2012

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    arcgis工具

    在做外联如EXCEL等的时候对数据有一些要求,确保第一行包含字段名,这些字段名不能超过十个字母,不能出现特殊字符。最好把EXCEL保存为.csv文件去除一些不兼容的内容再连接。 转载ESRI论坛Lucy1114帖子说明: 12...

    Editplus 3[1].0

    如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串 a. 选择要操作的行 b. 编辑-格式-删除行注释 c. 在弹出对话框里面输入要清除的行首字符,确定 【4】正则表达式应用...

    grub4dos-V0.4.6a-2017-02-04更新

    执行时可以不用输入扩展名,比如输入test如果当前路径下有一个test.g4b就会自动使用。 2013-10-17 1.修改代码支持新版HOTKEY。 2013-07-10 1.insmod现在支持长文件名(以前最多11个字符,现在没有限制). 2....

Global site tag (gtag.js) - Google Analytics