28-字符串的排列
来源:互联网 发布:ubuntu安装monaco字体 编辑:程序博客网 时间:2024/06/03 18:04
又™递归,又不会,看答案都是一知半解的,下面的代码是抄的讨论区里面的。
链接:https://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7来源:牛客网class Solution {public: vector<string> Permutation(string str) { //可以用递归来做 vector<string> array; if(str.size()==0) return array; Permutation(array, str, 0); sort(array.begin(), array.end()); return array; } void Permutation(vector<string> &array, string str, int begin)//遍历第begin位的所有可能性 { if(begin==str.size()-1) array.push_back(str); for(int i=begin; i<=str.size()-1;i++) { if(i!=begin && str[i]==str[begin])//有重复字符时,跳过 continue; swap(str[i], str[begin]);//当i==begin时,也要遍历其后面的所有字符; //当i!=begin时,先交换,使第begin位取到不同的可能字符,再遍历后面的字符 Permutation(array, str, begin+1);//遍历其后面的所有字符; swap(str[i], str[begin]);//为了防止重复的情况,还需要将begin处的元素重新换回来 /*举例来说“abca”,为什么使用了两次swap函数 交换时是a与b交换,遍历; 交换时是a与c交换,遍历;(使用一次swap时,是b与c交换) 交换时是a与a不交换; */ } }};
阅读全文
0 0
- 28 字符串的排列
- 28-字符串的排列
- 面试题28:字符串的排列
- 面试题28:字符串的排列
- 面试题28 字符串的全排列
- 剑指offer 28- 字符串的排列
- 28 - 字符串的全排列和组合
- 面试题28:字符串的排列
- 面试题28:字符串的排列
- 剑指offer-28字符串的排列
- 面试题28:字符串的排列
- 面试题28:字符串的排列
- 面试题28:字符串的排列
- 面试题28字符串的排列
- 面试题28:字符串的排列
- 面试题28:字符串的排列
- 面试题28:字符串的排列
- 面试题28—字符串的排列
- 什么样的运维工程师薪水较高, 你知道吗?
- 选择排序的Java实现
- 2014.4新版uboot启动流程分析
- Win7 64位+VS2013+opencv3.0配置
- centos配置nginx防盗链
- 28-字符串的排列
- Python+不同的数据存储方式比较
- selenium(四)--iframe
- 关于Fildder更改ip简单配置
- 函数的扩展
- Ubuntu下apt-get安装与pip安装的区别
- NSFileManager终极杀手
- LeetCode | 58. Length of Last Word
- java中关键字volatile的作用