为了账号安全,请及时绑定邮箱和手机立即绑定

输入:单词的字符串。打印给定字符串的所有重新排列而不重复。

输入:单词的字符串。打印给定字符串的所有重新排列而不重复。

潇湘沐 2023-11-10 16:34:39
我正在尝试用 Java 实现这个,但不知道如何实现。有什么建议么?例子。输入:ABC输出:abcacbbacbcacabcba输入:艾布输出:啊啊 啊啊啊
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这是我能想到的最简单的方法


 String str= "abc";

            ArrayList<String> letters = new ArrayList<String>();

            HashSet<String> combinations = new HashSet<String>();

            for(int i = 0; i<str.length();i++) {

//Break String into letters

                letters.add(str.substring(i,i+1));

            }

            for(int i = (str.length()*2)+1;i>0;i--) {

//Will loop through maximum possible outcomes

                String result = "";

                String bin = Integer.toBinaryString(i);

//System.out.println(bin);

                while(bin.length()<3) {

                    bin="0"+bin;

                }

                for(int b = bin.length();b>0;b--) {

                    if(bin.substring(b-1,b).equals("1"))result = result.concat(letters.get(b-1));

                }

                for(int b = bin.length();b>0;b--) {

                    if(bin.substring(b-1,b).equals("0"))result = result.concat(letters.get(b-1));

                }

                combinations.add(result);

            }

            System.out.println(str);

            for(String c : combinations) {

                System.out.println(c);

            }

它使用二进制循环遍历原始字符串的数组,然后将结果添加到哈希集以删除重复项


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信