黑马程序员技术交流社区

标题: 大神们,指点指点啊。关于字符串的全字符组合情况。 [打印本页]

作者: csu050416    时间: 2015-5-4 10:06
标题: 大神们,指点指点啊。关于字符串的全字符组合情况。
基础测试有这么一道题,我的想是嵌套循环,但是很片面,如果输入3个以上字符的字符串,我这程序就没用。那位大神教教思路。


/**
* 第七题:        编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:

                原始字符串是"abc",打印得到下列所有组合情况:
                "a" "b" "c"
                "ab" "bc" "ca" "ba" "cb" "ac"
                "abc" "acb" "bac" "bca" "cab" "cba"

*/

import java.io.*;
class Test7
{
        public static void main(String[] args) throws Exception
        {
                while(true)
                {
                         //键盘录入。
                        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                        String line = bufr.readLine();
                        if("886".equals(line))
                                break;
                        //转换成字符数组。
                        char[] ch = line.toCharArray();
                       //单个字符。
                        for(int x=0;x<ch.length;x++)
                                System.out.print("“"+Character.toString(ch[x])+"”");
                        System.out.println();
                        //两个字符,每个位置都对字符数组遍历,除掉相同的。
                        for(int x=0;x<ch.length;x++)
                        {
                                for(int y=0;y<ch.length;y++)
                                {
                                        if(x!=y)
                                                System.out.print("“"+Character.toString(ch[x])+Character.toString(ch[y])+"”");
                                        continue;
                                }
                        }
                        System.out.println();
                         //三个字符组合。
                        for(int x=0;x<ch.length;x++)
                        {
                                for(int y=0;y<ch.length;y++)
                                {
                                        for(int z=0;z<ch.length;z++)
                                        if(x!=y&&x!=z&&y!=z)
                                                System.out.print("“"+Character.toString(ch[x])+Character.toString(ch[y])+Character.toString(ch[z])+"”");
                                        continue;
                                }
                        }
                        System.out.println();
                }
        }
}


作者: ZSMAN    时间: 2015-5-4 12:17
看这里:http://bbs.itheima.com/forum.php?mod=viewthread&tid=117433
作者: csu050416    时间: 2015-5-4 13:29
ZSMAN 发表于 2015-5-4 12:17
看这里:http://bbs.itheima.com/forum.php?mod=viewthread&tid=117433

谢谢,看了代码,用了递归的思想。再去看看递归的应用知识。
作者: zhang214214    时间: 2015-5-4 13:51
不错不错不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2