《剑指offer》-字符串的排列
来源:互联网 发布:策略模式 java的概念 编辑:程序博客网 时间:2024/05/29 03:16
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
解法:可以使用STL里面的全排序的函数,next_permutatio()。这里我对函数内部进行了一下研究,参考的STL源码里面的代码理解了一遍,大牛写的代码就是厉害。细细体会。那个剑指书上的递归代码把我搞得晕头转向的,进行了单步调试,脑子不够用,溢出了(不过用来训练程序思维到倒是挺好的,改天再推演推演)。。。。。还是大牛STL里面的更加好理解吧。
template <class T>bool my_next_permutation(T first, T last) {if(first == last) return false;T i = first;++i;if(i == last) return false; //只有一个元素i = last;--i; //指向最后一个元素for(;;) {T ii = i; //最后一个元素--i;//倒数第二个元素if(*i < *ii) { //找到两者相邻,且前者小于后者的一对邻居T j = last; //从最后一个开始找while(!(*i < *--j)); //找到第一个大于i的元素iter_swap(i, j); //应该是指向的值互换reverse(ii, last); return true;}if(i == first) {reverse(first, last);return false; }}}class Solution {public: vector<string> Permutation(string str) { vector<string> result; if(str.length() == 0) return result; result.push_back(str); while (my_next_permutation(str.begin(), str.end())) { result.push_back(str); } return result; }};
0 0
- 【剑指offer】字符串的排列
- 剑指offer--字符串的排列
- 《剑指offer》字符串的排列
- 【剑指Offer】字符串的排列
- 剑指offer--字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- [剑指offer]字符串的排列
- 《剑指offer》-字符串的排列
- 剑指offer|字符串的排列
- 【剑指offer】字符串的排列
- 《剑指offer》字符串的排列
- 剑指Offer:字符串的排列
- 【剑指offer】字符串的排列
- 剑指offer-字符串的排列
- 剑指offer 字符串的排列
- 剑指offer 字符串的排列
- 如何将dataframe转换为rdd类型
- 自定义TextView实现跑马灯效果
- EventBus源码分析
- android 代码设置、打开wifi热点及热点的连接
- XMG 核心动画与UIView动画的区别
- 《剑指offer》-字符串的排列
- Hibernate关联映射
- hdu 5695 Gym Class
- java单例模式
- HDU 5327 Olympiad
- 2016/5/21 1004. 不使用循环
- java 异常捕捉
- SharedPreferences的用法详解
- 2016/5/21 1002. format the book list again~