class Solution { public: vector<string> Permutation(string str) { if(str.length() == 0)return this->result; int choose_table[9] = {0}; create_string(str,"",0,choose_table); return this->result; } void create_string(string str, string c_str,int length,int* choose_table){ if(length == str.length()){ //相同的要删除 if(find(result.begin(),result.end(),c_str) == result.end()) result.push_back(c_str); } for(int i = 0;i<str.length();i++){ if(choose_table[i] != -1){ //回溯 c_str.push_back(str[i]); choose_table[i] = -1; create_string(str,c_str,length+1,choose_table); choose_table[i] = 0; c_str.pop_back(); } } } private: vector<string> result; };