剑指offer28 字符串的排列
Posted 去做点事情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer28 字符串的排列相关的知识,希望对你有一定的参考价值。
1.全局变量可以在最后去定义并初始化,不一定非要在开头
2.此题有一种特殊情况需要考虑,比如字符串是“aa”,那输出应该是“aa”,而不是“aa,aa”,即相同的不输出。实现这个处理用了c++中的容器set,set不保存重复元素。在存储的时候,遇到相同的元素,set不会把相同的元素保存进set。clear是清空set中的元素。
3.
class Solution { public: vector<string> Permutation(string str) { if(str.size() == 0) return ans; length = str.size(); int begin = 0; Permutation(str,begin); //res.clear(); set<string>::iterator it; for (it = res.begin(); it != res.end(); ++it) ans.push_back(*it); return ans; } void Permutation(string str,int begin){ if(begin == length){ res.insert(str); return; } for(int i = begin;i < length;i++){ swap(str[begin],str[i]); Permutation(str,begin+1); swap(str[begin],str[i]); } } set<string> res; vector<string> ans; int length = 0; };
以上是关于剑指offer28 字符串的排列的主要内容,如果未能解决你的问题,请参考以下文章