作测试题的时候遇见一道 /**
8、 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
原始字符串是"abc",打印得到下列所有组合情况:
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
*/
public class Test8
{
public static void main(String[]args)
{
String s = "abc";//
//将字符串s转换成一个字符数组
char[] arr = s.toCharArray();
//思考,用数组的角标将数组中每个元素进行不同的排序
//非别输出一个元素,俩个元素,三个元素
for(int x=0;x<arr.length;x++)
{
//分别输出字符数组中的每个元素
System.out.print(arr[x]+",");
for(int y=0;y<arr.length;y++)
{
//排除字符相同的情况
if(x==y)
continue;
else
{
//将不同字符装入一个新的数组,
char [] arr1 =new char[]{arr[x],arr[y]};
//将新字符数组转换成字符窜打印
System.out.print(new String(arr1)+",");
for(int z=0;z<arr.length;z++)
{
//排除字符相同情况
if(z!=x&&z!=y)
{
char [] arr2 =new char[]{arr[x],arr[y],arr[z]};
System.out.print(new String(arr2)+",");
}
else
continue;
}
}
}
}
}
}
如果是四个字符就得四个for循环,怎么样改写呢? |
|