jalr4ever level
获赞
1267
粉丝
26
关注
9
看过 TA
32
景德镇陶瓷职业技术学院
2020
Java
IP属地:广东
走着瞧
私信
关注
2019-09-01 01:52
已编辑
景德镇陶瓷职业技术学院 Java
题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入:一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 思路 先学习回溯的基本套路,这里使用回溯法解,那么思考回溯的那些玩意有啥: path 是啥 ?StringBuilder paths 是啥 ?TreeSet 状态重置哪一些东西?重置使用状态 visited[] 以及 StringBuilder 的最后一个字符 具体是这样的: 排列组合中用过的字符不能再用,所以要用 boolean vi...
砚水凝:我来说一下我的理解 private void combination(char[] strs, int len) { if (len == strs.length) { paths.add(path.toString()); return; } for (int i = 0; i < strs.length; i++) { if (!visited[i]) { visited[i] = true; path.append(strs[i]); combination(strs, len + 1);//这一步开始进入新的循环,之前标志位置为true //从这里开始回溯,所以就是要考虑不放当前位进入path。标志位置为false,之前添加的当前位要删除掉 visited[i] = false; path.deleteCharAt(path.length() - 1); } } }
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务