黑马程序员技术交流社区

标题: 这个题怎么解? [打印本页]

作者: 13885045482    时间: 2016-9-15 18:26
标题: 这个题怎么解?
15.分析以下需求,并用代码实现:
        (1)打印一个字符串的全字符组合情况,原始字符串中没有重复字符
        (2)例如:原始字符串是"def", 打印得到下列所有组合情况:
                "d" "e" "f" "de" "df" "ed" "ef" "fd" "fe" "def" "dfe" "edf" "efd" "fde" "fed"
        提示: 使用 TreeSet
作者: huangbinqqian    时间: 2016-9-15 19:26
是只有三个数的吗?那就用三个for循环,记得最后一层for循环的判断语句是不可以重复一样就ok了。。其实和之前的99算法的思想差不多
作者: jiubaK    时间: 2016-9-15 21:01
嗯,用三层for循环就可以了,如果你不会递归的话
作者: flfjewffg    时间: 2016-9-15 23:32
楼主,针对这个题,用3层for 可以完成,附上代码.你看看,没写注释,但思路简单.如果不是三个字母就不行了,能力有限.用递归应该可以,楼主可以研究研究  
public class Test1 {

        public static void main(String[] args) {
                String str = "def";
                TreeSet<String> tr = new  TreeSet<>(new Comparator<String>() {
                        public int compare(String o1, String o2) {
                                int num =o1.length()-o2.length();
                                return num == 0?1:num;
                        }
                });
                char[] arr = str.toCharArray();
                for (int i = 0; i < arr.length; i++) {
                        tr.add(arr[i]+"");
                        for (int j = 0; j < arr.length; j++) {
                                if(arr[i]!=arr[j]) {
                                        tr.add(arr[i]+""+arr[j]);
                                }
                                for (int j2 = 0; j2 < arr.length; j2++) {
                                        if(arr[j2] != arr[j] && arr[j2] != arr[i]&&arr[j]!= arr[i]) {
                                                tr.add(arr[j2]+""+arr[j]+arr[i]);
                                        }
                                }
                        }
                }
                for (String st : tr) {
                        System.out.println(st);
                }
        }

}
作者: a953558401    时间: 2016-9-15 23:41
用递归吧
作者: Zzh94520    时间: 2016-9-15 23:50
。。。。。。。。。。。。。。。。。。
作者: wo1026756529    时间: 2016-9-15 23:52
for怎么做啊




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