java 字符串是"abc",打印得到所有组合情况,求解思想 5

packagetemp;/***编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符例如:原始字符串是"abc",打印得到下列所有组合情况"a""b""c""ab... 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<String> results = new LinkedHashSet<String>(); 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<String> newones = new LinkedHashSet<String>(); 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()); }}

代码贴上来有点乱弄一张图片,图片和代码内容一样啊~~
展开
 我来答
yugi111
2014-12-09 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部

import java.util.Arrays;
import java.util.LinkedList;

public class Tester
{
public static void recursionSub ( LinkedList<String[]> list, int count, String[] array, int ind, int start, int... indexs )
{
start++;
if (start > count - 1)
{
return;
}
if (start == 0)
{
indexs = new int[array.length];
}
for ( indexs[start] = 0; indexs[start] < array.length; indexs[start]++ )
{
recursionSub (list, count, array, 0, start, indexs);
if (start == count - 1)
{
String[] temp = new String[count];
for ( int i = count - 1; i >= 0; i-- )
{
temp[start - i] = array[indexs[start - i]];
}
boolean flag = true;
L: for ( int i = 0; i < temp.length; i++ )
{
for ( int j = i + 1; j < temp.length; j++ )
{
if (temp[i] == temp[j])
{
flag = false;
break L;
}
}
}
if (flag)
{
list.add (temp);
}
}
}
}

public static void main ( String[] args )
{
String string = "a,b,c";
String[] A = string.split (",");
LinkedList<String[]> list = new LinkedList<String[]> ();
for ( int i = 1; i <= A.length; i++ )
{
recursionSub (list, i, A, 0, -1);
for ( String[] strings : list )
{
System.out.print (Arrays.toString (strings).replaceAll ("[\\[\\]\\,\\s]", "") + " ");
}
System.out.println ();
list.clear ();
}
}
}
更多追问追答
追问
你这方法是写死的把?如果换成abcd就不行了把?
您能帮我看看我发的那个方法么?
能用我也能看懂,就是想把那个方法的思想了解一下~~
追答
是不是die的,试试就知道了,我知道你并没有试。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式