剑指offer:字符串的排列

来源:互联网 发布:现代木结构建筑 知乎 编辑:程序博客网 时间:2024/05/29 02:47

题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba(结果请按字母顺序输出)。

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

class Solution {public:string tmp;vector<string> res;vector<string> per(string str){if (str.size() == 0){res.push_back(tmp);return res;}int i, j;string s;for (i = 0; i < str.size(); i++){tmp += str[i];for (j = 0; j < str.size(); j++){if (j != i)s += str[j];}res = per(s);s.clear();tmp = tmp.substr(0, tmp.size() - 1);}return res;}vector<string> Permutation(string str) {if (str.size() == 0)return res;res = per(str);vector <string> ::iterator it;sort(res.begin(), res.end());it = unique(res.begin(), res.end());if (it != res.end())res.erase(it, res.end());return res;}};

0 0
原创粉丝点击