[검지 Offer] 27.문자열 정렬

3649 단어
[사고방식] 첫 번째부터 모든 문자의 모든 가능성을 판단하고 이에 따라 귀속한다.
 1 class Solution
 2 {
 3 public:
 4     void PermutationHelp(vector<string> &ans, int k, string str) // k 
 5     {
 6         if(k == str.length() - 1)
 7             ans.push_back(str);
 8         set<char> S;// 
 9         sort(str.begin() + k, str.end());// 
10         for(int i = k; i < str.length(); i++)
11         {
12             if(S.find(str[i]) == S.end()) // 
13             {
14                 S.insert(str[i]);
15                 swap(str[i], str[k]);
16                 PermutationHelp(ans, k + 1, str);
17                 swap(str[i], str[k]);// 
18             }
19         }
20     }
21     vector<string> Permutation(string str)
22     {
23         vector<string> ans;
24         PermutationHelp(ans, 0, str);
25         return ans;
26     }
27 };

좋은 웹페이지 즐겨찾기