黑马程序员技术交流社区
标题:
关于这题的解决思路详解
[打印本页]
作者:
dsh
时间:
2014-10-3 13:27
标题:
关于这题的解决思路详解
我的思路是递归 但是太麻烦 不知道各位有没有什么好点的办法
编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
例如:
原始字符串是"abc",打印得到下列所有组合情况
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
作者:
ye361571404
时间:
2014-10-3 20:34
网上早来的,但是我没看明白
public class Test {
public static String[] mid(String[] str,String[] middle) //-----中间方法
{
String[] end =new String[(middle.length*(str.length-middle[0].length()))];
int pp=0;
for (int i=0;i<middle.length;i++)
{
for (int ii=0;ii<str.length;ii++)
{
if (middle[i].indexOf(str[ii])<0)
{
end[pp++]=middle[i]+str[ii];
}
}
}
return end;
}
public static String[] turn(String[] str) //-------------主方法
{
String[] end=new String[count(str.length)];
int pp=0;
System.arraycopy(str,0,end,pp,str.length);
pp+=str.length;
String[] middle =str;
for (int i=0;i<str.length-1;i++)
{
middle=mid(str,middle);
System.arraycopy(middle,0,end,pp,middle.length);
pp+=middle.length;
}
return end;
}
public static int count(int length) //---------------计数返回数组维数
{
if (length>1)
return length+length*count(length-1);
else
return 1;
}
public static void show(String[] str) //------------打印数组
{
for (String i : str)
{
System.out.print(i+"\t");
}
System.out.println();
System.out.println();
}
public static void main(String[] args)
{
String[] str1={"A","B","C"};
show(turn(str1));
}
}
复制代码
作者:
鲁行
时间:
2014-10-3 22:09
/*
编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
例如:
原始字符串是"abc",打印得到下列所有组合情况
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
*/
class Test
{
public static void main(String[] args)
{
//定义一个字符串
String str = "abc";
//调用String类的将字符串变数组的方法
char[] ch = str.toCharArray();
//用for循环进行嵌套
for (int x=0;x<ch.length ;x++ )
{
//读到第一个字符时直接将其输出.
System.out.println(ch[x]);
//读到第二个字符时,只有当两个字符不相同时才输出.
for(int y=0;y<ch.length;y++)
{
if(x!=y)
System.out.println(""+ch[x]+ch[y]);
//读到第三个字符时,只有当三个字符都不相同时才输出.
for(int z=0;z<ch.length;z++)
{
if(z!=x&&z!=y&&x!=y)
System.out.println(""+ch[x]+ch[y]+ch[z]);
}
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2