黑马程序员技术交流社区
标题:
一个编程的问题,,,高手回答,谢谢
[打印本页]
作者:
awkflf11
时间:
2014-5-4 17:50
标题:
一个编程的问题,,,高手回答,谢谢
编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,
例如:原始字符串是"abc",
打印得到下列所有组合情况:
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
作者:
jieyu90
时间:
2014-5-4 18:18
在做基础题吧?这一题我也没搞出来,不过大致思路应该是先求组合,然后对于每一种组合求出该组合所对应的全排列。怎么求组合、排列之类的问题网上有很多
作者:
寻找人生目标
时间:
2014-5-4 19:30
:L 怎么感觉基础里没遇到过这题
作者:
Lin0411
时间:
2014-5-4 20:05
在andorid论坛已经为你解答了,复制一遍。
public class test
{
public static void main(String[] args)
{
perm("abc".toCharArray(), 0);
}
public static void perm(char[] chs,int k)
{
if(k == chs.length)
{
for(int i=0; i<chs.length; i++)
{
System.out.print(chs[i]);
}
System.out.print(" ");
}
else
{
for(int i=k; i<chs.length; i++)
{
swap(chs, i, k);
perm(chs, k+1);
swap(chs, i, k);
}
}
}
public static void swap(char[] chs,int i,int j)
{
char tem = chs[i];
chs[i] = chs[j];
chs[j] = tem;
}
}
复制代码
作者:
Lin0411
时间:
2014-5-4 20:09
是这一份!!!
这下应该完整了。
public class test
{
public static void main(String[] args)
{
showPermString("abcd");
}
public static void showPermString(String str)
{
for(int i=1; i<=str.length(); i++)
{
List<String> list = new ArrayList<String>();
perm(list, str.toCharArray(), 0, i);
System.out.println(list);
}
}
public static void perm(List<String> list,char[] chs,int k,int len)
{
if(k == chs.length)
{
String string = String.valueOf(chs, 0, len);
if(!list.contains(string))
list.add(string);
}
else
{
for(int i=k; i<chs.length; i++)
{
swap(chs, i, k);
perm(list,chs, k+1,len);
swap(chs, i, k);
}
}
}
public static void swap(char[] chs,int i,int j)
{
char tem = chs[i];
chs[i] = chs[j];
chs[j] = tem;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2