//比如输入字符串 "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:所用时间就很长了,不想等了。
分享到:
相关推荐
标题 "输入一个字符串,输出所有该字符串的组合情况" 涉及的主要知识点是字符串处理和算法,特别是组合和排列的生成。在这个问题中,我们需要编写程序来生成一个给定字符串的所有可能的子序列或子字符串,这通常涉及...
1. **字符串是一个浮点数**:浮点数通常包含整数部分和小数部分,可以通过 `[+-]?[0-9]*\.[0-9]+` 这样的正则表达式来表示。 2. **由26个英文字母组成的字符串**:可以通过 `[a-zA-Z]{26}` 来表示。 3. **由26个英文...
9. **QUOTENAME**: 此函数用于将输入字符串用特定的分隔符包围,使字符串成为有效的SQL标识符。 10. **REPLACE**: REPLACE函数查找字符串中所有指定子串并替换为新的字符串,用于批量替换文本。 11. **REPLICATE**...
可以通过不同的方式调用此函数来改变字符串的内容,比如指定一个新的字符串或者重复某个字符多次。 **1.2.3 at** `at` 函数返回字符串中指定位置的字符,并且会在索引超出范围时抛出异常。这比使用 `[]` 运算符...
在上面的版本中,我们直接将输入字符串转换为Set,然后通过扩展操作符`...`将Set转换回数组,并进一步用`join('')`组合成字符串。 如果要处理的是数字数组,我们可以稍作修改: ```javascript function ...
5. 输出编码:每次找到的字符串编码都将被输出,直到所有输入数据都被处理完。 6. 压缩结束:在编码结束时,通常需要一个特殊的结束码来指示输入数据的结束,这个结束码可以是字典中没有的编码。 LZW解码的过程则...
- Global属性设置为True,表示正则表达式操作会应用于整个输入字符串中的所有匹配项。 - IgnoreCase属性设置为True,表示在匹配过程中不区分大小写。 - MultiLine属性设置为True,表示正则表达式的锚点(比如"^"和"$...
在字符串中,我们可以将其理解为不重复的字符组合。因此,我们需要遍历两个字符串,将每个字符添加到结果字符串中,但只添加一次。 以下是实现这个功能的一种可能的方法: ```python def merge_strings(A, B): ...
其次,程序运行速度慢,时间复杂度较高,意味着随着输入字符串长度的增加,程序执行的时间会显著增长。 对于组合问题,通常的解决方案是使用递归或回溯法。递归方法通过不断地选择当前元素或跳过它来生成所有可能的...
3. 构建新编码:取当前编码和下一个输入字符组合成的新字符串,检查字典中是否存在这个组合。如果存在,就更新当前编码;如果不存在,就将新字符串加入字典,并用其自身作为新的编码。 4. 输出编码:将当前编码输出...
同时,由于MD5的特性,逆向破解这个密码系统将非常困难,因为需要找出原始的输入字符串,这在计算上是极其复杂的。 在实际应用中,这样的动态密码通常会配合服务器端的验证,用户输入密码后,服务器端会使用同样的...
【知识点详解】 1. Python 字符串访问:Python 字符串是不可变的,可以...以上是对题目中涉及的Python编程相关知识点的详细解析,涵盖了字符串操作、表达式计算、条件判断、数据类型、输入输出、循环结构等多个方面。
6. 解压缩:解压缩的过程是压缩的逆过程,通过读取输出流中的编码,在字典中查找对应的字符串,然后将其输出,并将字符串与下一个编码添加到字典中。 在LZW的实现中,可能会涉及到一些优化策略,比如使用位操作进行...
如果找到,将该字符串输出,并将字符串的第一个字符与下一个接收到的编码组合,形成新的当前字符串。 在实际应用中,LZW算法的性能会受到输入文件类型的影响。对于包含大量重复模式的数据,如文本文件,LZW能提供很...
4. **结束编码**:当输入字符串处理完,如果最后一个模式没有完全发送,可能需要额外的步骤来表示结束,例如使用特殊的结束码。 5. **解码过程**:解码时,从接收的第一个码字开始,从字典中查找对应的字符串并输出...
当接收到一个编码时,首先输出编码所对应的字符串,然后将该字符串的第一个字符与下一个编码的前一个字符组合,形成新的字符串等待后续的解码。 LZW算法的优点包括其高效性和无损性。它可以在保持原始数据完整性的...
接收到编码后,查找字典中的对应条目,输出该条目的字符串,然后将这个字符串与下一个接收到的编码组合,形成新的字典条目。 ### LZW源码解析 在`lzw_soft`这个源代码文件中,我们可以找到以下关键部分: 1. **...
如果不在,将上一个输出的字符串和当前字符组合成新的字符串,加入字典,输出新字符串的编码。 - 更新字典:随着新的字符串不断被创建并输出,字典会持续扩大,以包含所有可能的组合。 - 重复以上过程,直到输入...
在易语言中,组合框是实现数据输入和展示的重要工具,用户可以通过下拉列表来选择一个或多个值。然而,在实际应用中,我们常常需要确保组合框中的每一项都是唯一的,避免重复的项目被添加进去,以免影响用户体验或者...
15. 3Sum:找到数组中所有和为0的不重复的三个数的组合。 16. 3Sum Closest:与3Sum类似,但需要找到和为目标值最近的三个数的组合。 17. Letter Combinations of a Phone Number:电话号码的字母组合。这是回溯...