码迷,mamicode.com
首页 > 其他好文 > 详细

Total Difference String

时间:2015-12-22 20:58:49      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

  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;
}

 

Total Difference String

标签:

原文地址:http://www.cnblogs.com/fengyubo/p/5067850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!