[剑指offer]字符串的排列
2016-04-29 15:32
555 查看
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
分析:经典问题。记住吧。
代码:
class Solution { public: void helper(string str,vector<string> &ret,int k){ if(k==str.size()-1){ ret.push_back(str); } unordered_set<char> s; sort(str.begin()+k,str.end()); for(int i=k;i<str.size();i++){ if(s.find(str[i])==s.end()){ s.insert(str[i]); swap(str[i],str[k]); helper(str,ret,k+1); swap(str[i],str[k]); } } } vector<string> Permutation(string str) { int n=str.size(); vector<string> ret; helper(str,ret,0); return ret; } };
相关文章推荐
- 深入剖析JavaScript中的函数currying柯里化
- Extjs 3.X 和 Extjs 4.x 为GridPanel动态添加一行数据的区别
- 快速搭建 node.js+express
- 什么是jQuery?
- 剑指offer(5) 旋转数组中的最小值
- Butter Knife高级用法
- js日期比较
- react native 离线ios
- import caffe时出错:can not find module skimage.io
- leetcode——241——Different Ways to Add Parentheses
- javascript中利用柯里化函数实现bind方法【推荐】
- html标签<q> <blockquote> <abbr>的含义;
- angularjs指令系统系列课程(4):作用域Scope
- An Introduction to WebDriver Using the JavaScript Bindings
- jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
- Jquery内容选择器和表单选择器
- jquery获取自定义属性(attr和prop)实例介绍
- js 返回上一页和刷新
- JavaScript基础学习(八)—事件
- JavaScript ---- 城市联动