Total Difference String

  Total Difference Strings
  给一个string列表,判断有多少个不同的string,返回个数相同的定义:字符串长度相等并从左到右,或从右往左是同样的字符 abc 和 cba 为视为相同。

  采用“哈希表”来存储字符串,在O(N)的时间复杂度内完成。

#include <string>
#include <iostream>
#include <algorithm>
#include <initializer_list>
#include <unordered_map>

using namespace std;

class Solution
{
public:
    Solution(const initializer_list<string> &il)
    {
        string s;

        for(initializer_list<string>::iterator it = il.begin(); it != il.end(); it++)
        {
            s = *it;

            reverse(s.begin(), s.end());

            s = this->_sort(*it, s);

            m[s]++;
        }
    }

    size_t getTotalDifferenceStringNumber(){ return this->m.size(); }

private:
    string _sort(const string& lhs, const string& rhs)
    {
        if(lhs > rhs)
            return rhs + lhs;
        else
            return lhs + rhs;
    }

    unordered_map<string,  unsigned> m = {};
};

int main()
{
    Solution so( {"abc", "cba", "Aaa", "abc"} );
    cout << so.getTotalDifferenceStringNumber();

    return 0;
}

 

posted @ 2015-12-22 19:19  健康平安快乐  阅读(228)  评论(0编辑  收藏  举报