1 #define _for(i,a,b) for(int i = (a);i < b;i ++) 2 3 class Solution 4 { 5 public: 6 set<string> s; 7 int numTilePossibilities(string tiles) 8 { 9 s.clear(); 10 int rnt = 0; 11 for (int S = 1; S < 1 << tiles.size(); S ++) 12 { 13 string tmp; 14 _for(i,0,tiles.size()) 15 { 16 if(S>>i & 0x1) 17 tmp += tiles[i]; 18 } 19 sort(tmp.begin(),tmp.end()); 20 do 21 { 22 if(!s.count(tmp)) 23 { 24 rnt ++; 25 s.insert(tmp); 26 } 27 }while(next_permutation(tmp.begin(),tmp.end())); 28 } 29 return rnt; 30 } 31 };