编写带有下面声明的例程:
public void permute(String str);
public void permute(char[] str, int low, int high);
第一个例程是个驱动程序,它调用第二个例程并显示String str中字符的所有排序。如果str是"abc",那么输出的串是abc,acb,bca,cab和cba。第二个例程使用递归
public void permute(char[] str, int low, int high) {
if (low >= high) {
System.out.println(new String(str));
return;
}
for (int i = low; i < high; i++) {
char c = str[low];
str[low] = str[i];
str[i] = c;
permute(str, low + 1, high);
c = str[low];
str[low] = str[i];
str[i] = c;
}
}
public void permute(String str) {
permute(str.toCharArray(), 0, str.length());
}
public static void main(String[] args) {
new Test2().permute("abcd");
}
说明:对该算法的大致流程明白,具体还不甚了解,先写下来,以后慢慢研究
http://www.pusuo.net/2010-03-08/111207216.html
分享到:
相关推荐
字符串的所有排列是指将一个字符串中的字符按照不同的顺序重新组合,形成所有可能的字符串。这个问题通常用于考察程序员对递归的理解和实现能力。 首先,我们需要理解什么是递归。递归是一种解决问题的方法,它通过...
本文将详细介绍一个Java程序的设计思路与实现细节,该程序的功能是从控制台输入的一串字符串中筛选出所有的整数并输出。这个过程涉及到Java中的控制台输入处理、正则表达式匹配以及字符串操作等知识点。 #### 关键...
题目要求我们编写一个程序,能够接收用户输入的字符串,然后对这个字符串中的字符进行排序,并输出排序后的结果。下面将详细讨论这个过程涉及到的知识点。 首先,我们需要了解字符串的基本概念。在大多数编程语言中...
3. 输出结果:执行后,函数会返回一个字符串数组,其中包含了按照分隔符拆分后的子字符串。 四、处理中文字符 LabVIEW支持Unicode字符集,所以处理中文字符与处理英文字符并无太大区别。只需确保字符串本身和分隔符...
在C语言中,实现输入一个字符串并打印出其所有字符排列的方法涉及到经典的排列组合问题,通常采用递归的方式来解决。这种算法称为全排列(Permutation)算法,它能生成一个集合的所有可能排列。这里我们将详细讲解...
这里使用 `split` 函数将输入字符串拆分为数组 `var_arr`,并输出数组的第一个元素。 2. **遍历数组:** ```bash $ echo $var | awk '{split($0, var_arr, ""); for (i in var_arr) printf("%s", var_arr[i]);}'...
当输入一个只包含小写字母的字符串和一个整数M时,我们需要生成所有可能的长度为M的子串,并确保这些子串是原字符串中字符的排列,且不包含重复的字符。例如,对于字符串"abcd"和M=3,我们期望得到的输出是"abc",...
1. **字符串是一个浮点数**:浮点数通常包含整数部分和小数部分,可以通过 `[+-]?[0-9]*\.[0-9]+` 这样的正则表达式来表示。 2. **由26个英文字母组成的字符串**:可以通过 `[a-zA-Z]{26}` 来表示。 3. **由26个英文...
`split()`方法返回的是一个字符串数组,长度取决于输入字符串中匹配正则表达式的次数。如果正则表达式不匹配任何内容,结果数组的长度为1,包含整个原始字符串。 ### 6. 避免空元素 有时,连续的分隔符会导致生成空...
相反,如果我们有一系列ASCII值,想要组合成一个字符串,可以逐个将这些值用`chr()`函数转换,然后连接起来。在Python中,可以使用列表推导式和`join()`函数来实现。 ```python # Python示例 ascii_values = [65, ...
1. **批量添加前缀/后缀**:用户可以输入一组字符串,并指定一个前缀或后缀,工具会自动将该前缀或后缀添加到每个字符串的开头或结尾。 2. **多行文本处理**:支持导入包含多行文本的文件,每行视为一个独立的字符...
如果输入的是一串八进制数值字符串,我们需要先将它们分割,逐个转换,再组合成ASCII字符串。下面是一个基本的转换过程示例: ```csharp string input = "101 102 103"; // 八进制数值字符串 string[] octalValues ...
这个函数会将输入字符串中的每个字符转换为对应的16进制字符串,并连接起来。 **16进制转字符串** 反过来,将16进制字符串转换回ASCII字符串,我们需要将16进制字符串分割成单个字符,然后将它们解析为整数,最后...
此程序是模拟手机键盘的数字键对应的字母,输入手机键盘上的数字,输出对应的所有字母组合。比如输入12,输出“ad”"ae""af""bd""be""bf""cd""ce""cf"因为是一道面试题,网上大部分是C++版本的,今天特此整理为C#...
四、输入一个字符串,字符串是字母和数字的组合,编程实现输出一个新的字符串,要求字母在前面,数字在后面,顺序不变,例如:2s7ess83a 变成sessa2783 五、一个字符串,获取最长的一个单词,如有多个相同...
- 使用单引号(`'`)或双引号(`"`)来创建一个字符串,例如:`var str = "Hello, World!";` - 可以使用`new String()`构造函数创建一个字符串对象,但这不是常用的方式。 2. **转义字符**: - 在字符串中,某些特殊...
在LabVIEW中,处理字符串是一项常见的任务,尤其是当你需要将一个长字符串拆分成多个子字符串时。本教程将详细介绍如何在LabVIEW中实现“字符串拆分到数组”并支持中文字符。 首先,理解基本概念: 1. **字符串**: ...
首先,我们需要定义一个字符串指针数组来存储这5个字符串的首地址。在C语言中,字符串实际上是以字符数组的形式存在的,因此,我们可以这样声明: ```c char *str_ptrs[5]; // 声明一个字符串指针数组,用于存储5个...
// 输入字符串 String[] s2 = str.split("\\s"); // 以空格为分隔符拆分字符串,并保存到数组 s2 里面 for (int i = s2.length - 1; i >= 0; i--) { // 反向输出数组 System.out.print(s2[i] + " "); } } } `...