题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
#include <algorithm> class Solution { public: vector<string> result_final; set<string> result; void permRec(string str, int i){ if(i >= str.length()){ return; } if(i == str.length() - 1) { result.insert(str); return; } else { for(int j = i; j < str.length(); j++){ //if(str[i] != str[j]){ char tmp = str[i]; str[i] = str[j]; str[j] = tmp; permRec(str, i + 1); tmp = str[i]; str[i] = str[j]; str[j] = tmp; //} } } } vector<string> Permutation(string str) { //sort(str.begin(), str.end()); permRec(str, 0); for(set<string>::iterator it = result.begin(); it != result.end(); it++){ result_final.push_back(*it); } //sort(result.begin(), result.end()); return result_final; } };