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; }
智慧在街市上呼喊,在宽阔处发声。