【编程技巧】使用hash保存异位字符串
Coding Techniques
- 使用hash保存异位字符串
- 问题
- 解决方案
- 相关题目
使用hash保存异位字符串
问题
为了保存独一无二的字符串组成时,一般可以联想到使用数组保存字符数量,但是怎么保存到unordered_set或者unordered_map中呢?
如果使用下面形式:
using Key = array<int, 26>;
unordered_set<Key> us{}; // 会报错,implicit-default constructor
解决方案
上面代码的问题其实是没有对应的hash方法。
为了达到初始目标,可以使用string或者整型来达到目标
// string形式
unordered_set<string> us;
// ...
string tmp = srcStr;
sort(tmp.begin(), tmp.end());
us.insert(tmp); // us.emplace(tmp);
// 整型形式
unordered_set<int> us;
// ...
int key{};
for (auto c : s) {
key |= 1 << (c - 'a');
}
us.emplace(key);
相关题目
3272. 统计好整数的数目