【剑指offer-Java版】28字符串的排列
来源:互联网 发布:linux开机自启动服务 编辑:程序博客网 时间:2024/06/06 08:55
字符串的全排列:全排列问题刚刚做过,而且解决方法不止一种
递归,多想想
public class _Q28<T> { private int count = 0; public void Premutation(char chars[], int begin){ if(chars == null) return; if(chars.length == 0 || begin < 0) return; int end = chars.length - 1; if(begin == end){ count++; System.out.print(count+" : "); System.out.println(chars); }else{ for(int i=begin; i<=end; i++){ char c = chars[begin]; // 第一步,找出所有可以出现在首位的字符 chars[begin] = chars[i]; chars[i] = c; Premutation(chars, begin+1); // 第二步,递归的求出后半部分的全排列 c = chars[begin]; chars[begin] = chars[i]; // 第一步的后半部分,恢复数组 chars[i] = c; } } } /** * * @comment TODO * @param chars * @param m 排列的长度 -- 如果需要输出指定字符数组的全排列,那么直接使用for循环,使m 从0到数组长度即可 * @param result 排列结果链表 * @return void * @throws * @date 2016年4月16日 下午4:20:57 */ public void Combination(char chars[], int m, List<Character> result){ if(chars == null || result == null) return; if(m == 0){ System.out.println(result); return; } if(chars.length > 0){ // 包含当前第一个字符 -- 从剩下的字符中选出 m-1个 result.add(chars[0]); Combination(Arrays.copyOfRange(chars, 1, chars.length), m-1, result); // 不包含当前第一个字符 -- 从剩下的字符中选出m 个 result.remove(result.size()-1); Combination(Arrays.copyOfRange(chars, 1, chars.length), m, result); } } }
测试代码
public class _Q28Test extends TestCase { _Q28 premutation = new _Q28(); public void test(){ String str = "abcd"; char chars[] = str.toCharArray(); premutation.Premutation(chars, 0); List<Character> result = new ArrayList<>(); premutation.Combination(chars, 2, result); } }
1 0
- 【剑指offer-Java版】28字符串的排列
- 剑指Offer 28题 字符串的排列 Java版
- 剑指offer:字符串的排列(java)
- 剑指offer--面试题28:字符串的排列--Java实现
- 剑指offer--面试题28:字符串的排列--Java实现
- 剑指offer面试题28:字符串的排列 Java实现
- 剑指offer 28- 字符串的排列
- 剑指offer-28字符串的排列
- 【剑指offer】题28:字符串的排列
- 剑指offer 28 字符串的排列
- 剑指Offer面试题28(java版):字符串的排列
- 【剑指offer】字符串的排列
- 剑指offer--字符串的排列
- 《剑指offer》字符串的排列
- 【剑指Offer】字符串的排列
- 剑指offer--字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- 动态图文讲解8大排序算法
- 使用IntelliJ IDEA开发SpringMVC网站(一)开发环境
- Spring源码分析(二)-Spring IoC容器的初始化No.2
- Hadoop2.6.0运行mapreduce之推断(speculative)执行(上)
- web项目开发 之 前端规范 --- CSS编码规范
- 【剑指offer-Java版】28字符串的排列
- eclipse won't start - no java virtual machine was found
- UNPv1第十三章:高级IO
- 产品显示对应大图 【jquery】
- 中国佛学200句震撼世界的禅语
- Bag-of-words模型
- iOS UIImagePickerController 图片拾取器
- java中的垃圾回收之finalize()用法
- 关于onsubmit事件return的使用