【剑指offer】之字符串的组合
来源:互联网 发布:金字塔双轨制软件 编辑:程序博客网 时间:2024/05/24 05:26
题目:
输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
分析:
假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;而是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符。这两种选择都很容易用递归实现。
java代码实现:
private static void combination(String str) {char[] chars = getChars(str);Stack stack = new Stack();for(int i=1;i<=chars.length;i++) {combination(chars,0, i,stack);}}private static void combination(char[]chars, int index, int number,Stack stack) {if(number == 0) {Iterator iterator = stack.iterator();while(iterator.hasNext()) {System.out.print(iterator.next());}System.out.print(" ");return ; //如果不返回,则会出现重复的字符组合}if(index == chars.length)return ;stack.push(chars[index]);combination(chars, index+1,number-1,stack);stack.pop();combination(chars, index+1,number,stack);}private static char[] getChars(String str) {char[] temp = new char[str.length()];for(int i=0;i<str.length();i++) {temp[i] = str.charAt(i);}return temp;}
0 0
- 【剑指offer】之字符串的组合
- 【剑指offer】字符串的组合
- 【剑指offer】字符串的组合
- 剑指offer 之 字符串的全排列、全组合
- 《剑指Offer》:求字符串的组合
- 【剑指offer】字符串的排列与组合
- 剑指offer:字符串的组合(java)
- 【剑指offer】面试题:求字符串的所有组合
- 剑指Offer之 - 字符串的排列
- 【剑指offer】之字符串的排列
- 剑指offer(六十一)之字符串的排列
- 剑指offer面试题28扩展提————字符串的组合
- 《剑指Offer》面试题:字符串的组合(不用递归求解)
- 剑指offer 字符串的排列原题,java实现,组合排列去重
- 《剑指offer》之字符串专题
- 剑指offer--之翻转字符串
- 《剑指Offer》读书笔记---面试题28:字符串的排列,(扩展:求字符串的所有组合)
- 剑指offer:求字符的所有组合
- LIST<T>现在也支持序列化和反序列化了
- GameEngineArchitecture读书笔记
- OC方法之---NSSortDescriptor使用注意以及直接排序字符串数组
- Java安全通信:HTTPS与SSL
- 【转载】 计算机类期刊审稿周期
- 【剑指offer】之字符串的组合
- Android实战 - 音心播放器 (MusicActivity-音乐播放页面界面实现)
- Objective-c语言_可变字典
- Unity质量设置 Quality Settings
- Android学习之位图BitMap
- Jsoup解析HTML实例及文档方法详解
- Android混淆、反编译基础教程
- Spring中@Autowired注解、@Resource注解的区别
- c语言基础