输入一个字符串,输出该字符串中字符的所有组合
2014-07-03 21:36
316 查看
/*
* 输入一个字符串,输出该字符串中字符的所有组合。 举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
* 假设我们想在长度为n的字符串中求m个字符的组合。 我们先从头扫描字符串的第一个字符。针对第一个字符, 我们有两种选择:一是把这个字符放到组合中去,
* 接下来我们需要在剩下的n-1个字符中选取m-1个字符; 二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符。
* 这两种选择都很容易用递归实现。
*/
public static void combiantion(char chs[]) {
if (chs == null || chs.length == 0) {
return;
}
List<Character> list = new ArrayList();
for (int i = 1; i <= chs.length; i++) {
combine(chs, 0, i, list);
}
}
// 从字符数组中第begin个字符开始挑选number个字符加入list中
public static void combine(char[] cs, int begin, int number,
List<Character> list) {
if (number == 0) {
System.out.println(list.toString());
return;
}
if (begin == cs.length) {
return;
}
list.add(cs[begin]);
combine(cs, begin + 1, number - 1, list);
list.remove((Character) cs[begin]);
combine(cs, begin + 1, number, list);
}
public static void main(String args[]) {
char chs[] = { 'a', 'b', 'c' };
combiantion(chs);
}
}
* 输入一个字符串,输出该字符串中字符的所有组合。 举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
* 假设我们想在长度为n的字符串中求m个字符的组合。 我们先从头扫描字符串的第一个字符。针对第一个字符, 我们有两种选择:一是把这个字符放到组合中去,
* 接下来我们需要在剩下的n-1个字符中选取m-1个字符; 二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符。
* 这两种选择都很容易用递归实现。
*/
public static void combiantion(char chs[]) {
if (chs == null || chs.length == 0) {
return;
}
List<Character> list = new ArrayList();
for (int i = 1; i <= chs.length; i++) {
combine(chs, 0, i, list);
}
}
// 从字符数组中第begin个字符开始挑选number个字符加入list中
public static void combine(char[] cs, int begin, int number,
List<Character> list) {
if (number == 0) {
System.out.println(list.toString());
return;
}
if (begin == cs.length) {
return;
}
list.add(cs[begin]);
combine(cs, begin + 1, number - 1, list);
list.remove((Character) cs[begin]);
combine(cs, begin + 1, number, list);
}
public static void main(String args[]) {
char chs[] = { 'a', 'b', 'c' };
combiantion(chs);
}
}
相关文章推荐
- Swift - 排列组合之全排列 (输入一个字符串,输出该字符串包含的字符的所有组合)
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
- 【编程题】输入一个字符串,输出该字符串中相邻字符的所有组合。
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合 C#【总结】
- 题目:输入一个字符串,输出该字符串中字符的所有组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合(二)
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- C语言输入一个字符串,输出字符串的所有组合
- C#实现输入一个字符串输出该字符串字符的所有排列方式
- C语言 字符串 编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
- 编写函数fun(char *s),其功能是:把字符串中所有字符前移一个位置,串中的第1个字符移到最后。 例如,若输入字符串为:ABC123xyz ,则应输出字符串: BC123xyzA 。
- 读取一个字符串,并输出它里面字符的所有组合。
- 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。
- 读取一个字符串,输出它里面字符的所有组合