黑马程序员技术交流社区
标题:
求大神
[打印本页]
作者:
止询初衷
时间:
2014-8-4 22:23
标题:
求大神
* 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,
* 例如:原始字符串是"abc",打印得到下列所有组合情况:
* "a" "b" "c"
* "ab" "bc" "ca" "ba" "cb" "ac"
* "abc" "acb" "bac" "bca" "cab" "cba
作者:
hejinzhong
时间:
2014-8-4 22:52
思路很简单,就是循环打印各位元素
class Test001
{
public static void main(String[] args)
{
String s = "abc";
char[] arr = s.toCharArray();
one(arr);
two(arr);
three(arr);
}
public static void one(char[] arr)
{
for(int i=0;i<arr.length;i++)
{
System.out.print("\""+arr[i]+"\"");
}
System.out.println();
}
public static void two(char[] arr)
{
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr.length;j++)
{
if(i!=j)
System.out.print("\""+arr[i]+arr[j]+"\"");
}
}
System.out.println();
}
public static void three(char[] arr)
{
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr.length;j++)
{
for(int k=0;k<arr.length;k++)
{
if(i!=j && i!=k && j!=k)
System.out.print("\""+arr[i]+arr[j]+arr[k]+"\"");
}
}
}
System.out.println();
}
}
复制代码
作者:
王松朝
时间:
2014-8-4 22:54
貌似不是第一次提出这种问题了,你要小心了
可以用递归解决
HashSet set = new HashSet();// Set的作用是不会存储重复的对象
void main(){
String msg = "abc";
int len = msg.length();
int flen = len *len -len; // n*(n-1)
for(int i=0;i<flen;i++){
/// 拼装字符串,自己来搞定
}
}
public void split(String msg){
set.put(msg);
if(msg.length()>1){
split(msg.subString(1));
}
}
作者:
王一勇
时间:
2014-8-4 22:55
学习了~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2