zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    C++中头文件包含的问题
    linux环境变量
    win32进程和线程
    断言
    win32中的常用类型转换
    可变形参
    #define
    CString与char*互相转化
    extern
    手机CPU和GPU厂商
  • 原文地址:https://www.cnblogs.com/fengyubo/p/5067850.html
Copyright © 2011-2022 走看看