packagetemp;/***编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符例如:原始字符串是"abc",打印得到下列所有组合情况"a""b""c""ab""bc""ca""ba""cb""ac""abc""acb""b...
package temp;/** * 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 例如:
原始字符串是"abc",打印得到下列所有组合情况
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba" * @author Administrator * */import java.util.LinkedHashSet;import java.util.Set;
public class Demo { public static void main(String[] args) { String input = "abc"; // 求a/b/c三个字符的全排列 Set results = new LinkedHashSet(); results.add(""); for (int i = 0; i < input.length(); i++) { for (int j = 0; j < input.length(); j++) { String current = input.substring(j, j + 1); Set newones = new LinkedHashSet(); for (String s : results) { if (s.indexOf(current) == -1) { s += current; } newones.add(s); } results.addAll(newones); } } results.remove(""); for (String s : results) { System.out.println(s); } System.out.println(results.size()); }}
代码贴上来有点乱弄一张图片,图片和代码内容一样啊~~
展开