您的位置:首页 > Web前端

剑指offer:字符串的排列

2015-12-02 21:50 393 查看

题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: