剑指Offer系列-面试题28:字符串的排列
来源:互联网 发布:白金数据结局 编辑:程序博客网 时间:2024/06/03 20:00
题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
思路:
代码:
public ArrayList<String> Permutation(String str) { ArrayList<String> list = new ArrayList<String>(); // 输入合法性判断 if (str == null || str.isEmpty()) { return list; } // set去重 HashSet<String> set = new HashSet<String>(); fun(set, str.toCharArray(), 0); list.addAll(set); // 排序 Collections.sort(list); return list;}/*** @param set* @param str* @param num num处的字符串依次和后面的交换*/private void fun(HashSet<String> set, char[] str, int num) { // 已经全部交换过,结束 if (num == str.length) { set.add(new String(str)); return; } for (int i = num ; i < str.length ; i++) { swap(str, i, num); fun(set, str, num + 1); // 交换位置后要重新交换回来 swap(str, i, num); }}void swap(char[] str, int i, int j) { if (i != j) { char tmp = str[i]; str[i] = str[j]; str[j] = tmp; }}
0 0
- 剑指Offer系列-面试题28:字符串的排列
- 剑指offer面试题 字符串的排列
- 剑指offer面试题28字符串的所有排列permutation
- [剑指offer][面试题28]字符串的排列
- 【剑指offer】面试题28:字符串的排列
- 剑指Offer:面试题28 字符串的排列
- 剑指offer 面试题28—字符串的排列
- 《剑指Offer》面试题28:字符串的排列
- 《剑指Offer》学习笔记--面试题28:字符串的排列
- 剑指offer--面试题28:字符串的排列--Java实现
- 剑指offer--面试题28:字符串的排列--Java实现
- 【剑指Offer学习】【面试题28 :字符串的排列】
- 剑指offer面试题28-字符串的排列
- 剑指offer-面试题28:字符串的排列
- 剑指offer 面试题28:字符串的排列
- 剑指offer之面试题28:字符串的排列
- 剑指offer之面试题28字符串的排列
- 剑指Offer----面试题28:字符串的排列 & 去重
- 大数据的解决方案--------读写分离
- Android微信支付集成流程及其常见错误
- java 图片叠加和文字添加,图片圆形处理
- 从输入一个url 到页面加载完成,这个过程发生了什么
- c++封装的卡尔曼滤波
- 剑指Offer系列-面试题28:字符串的排列
- 第六届蓝桥杯java 熊怪吃核桃
- HDU 4907 Task schedule (技巧)
- CentOS快速安装TensorFlow
- 常见meta标签
- leetcode 349. Intersection of Two Arrays python
- 申请微信公众号
- Git上传项目到远程仓库
- C/C++_log2000_poj1002