字符串分类问题(牛客第二场笔试)

牛牛有N个字符串,他想将这些字符串分类,他认为两个字符串A和B属于同一类需要满足以下条件:
A中交换任意位置的两个字符,最终可以得到B,交换的次数不限。比如:abc与bca就是同一类字符串。
现在牛牛想知道这N个字符串可以分成几类。

#include "stdio.h"
#include <vector>
#include <deque>
#include <stack>
#include<map>
#include<utility>
using namespace std;

class Sort {
public:
  int find(vector<string> res, int n) {
        // write code here
        int count = 0;
        if(n>50)
            return 0;

        map<string,int> stringMap;
        map <string,int>::iterator iter,iterend;
        for(int i=0;i<n;i++)
        {
            sort(res[i].begin(),res[i].end());
            stringMap.insert(pair<string,int>(res[i],res[i].size()));
        }
        iterend = stringMap.end();
        for(iter=stringMap.begin();iter!=iterend;iter++)
        {
            count++;
        }
       /* for(int i=0;i<n;i++)
        {
            for(int j=0;j<res[i].size();j++)
            {
                cout<<res[i][j]<< " ";
            }
            cout<<endl;
        }
        */
        return count;
  }
};
int main() {
    int num;
    string str;
    vector<string> res;
   // while(cin>>num)
    {
        cin>>num;

        for(int i=0;i<num;i++)
        {
            cin>>str;
            res.push_back(str);
        }
    }



    Sort solution;
    int result = solution.find(res,num);
    cout<<"RESULT:"<<result<<endl;
   return 0;
}
原文地址:https://www.cnblogs.com/omelet/p/6617092.html