生成某字符串的所有排列组合

来源:互联网 发布:初学者学linux 编辑:程序博客网 时间:2024/05/03 08:49

    题目:《程序员面试金典(第5版)》P229

    编写一个方法,确定某字符串的所有排列组合。

    提示:每增加一个字符,只需将该字符插入已生成的字符串的任意位置。

//将字符t插入str的第index位元素的前面string Insert(string str,int index, char t){str.insert(str.begin() + index, t);return str;}vector<string> GetPerms(string a){vector<string> res;if (a.size() <= 1){res.push_back(a);return res;}string str(1,a[0]);res.push_back(str);for (int i = 1; i < a.size(); i++){int len = res.size();char tmp = a[i];for (int k = 0; k < len; k++){for (int j = 0; j < i; j++)res.push_back(Insert(res[k], j, tmp));res[k].insert(res[k].end(), tmp);res.push_back(res[k]);}res.erase(res.begin(), res.begin() + len);}return res;}


0 0
原创粉丝点击