剑指offer-打印出字符串的所有排列

来源:互联网 发布:网络运营托管 编辑:程序博客网 时间:2024/06/06 12:21
输入一个字符串, 按字典序打印出该字符串中字符的所有排列。例如输入字符串abc, 则打印出由字符a, b, c所能排列出来的所有字符串abc, acb, bac, bca, cab和cba。
输入描述 :

输入一个字符串, 长度不超过9(可能有字符重复), 字符只包括大小写字母。

#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;void Permutation(vector<string> &v,string str,int begin){if (begin == str.size() - 1){v.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]);Permutation(v, str, begin + 1);swap(str[i], str[begin]);}}vector<string> Permutation(string str) {vector<string> re;if (str.size() == 0)return re;Permutation(re, str, 0);sort(re.begin(), re.end());return re;}int main(){string str;//vector<string> v = {"cab","bac","cba","bca"};vector<string> v;//sort(v.begin(),v.end());cin >> str;v = Permutation(str);return 0;}


阅读全文
0 0
原创粉丝点击