题目来源
本题首先需要遍历出两个单词words[i]和words[j],之后如果将这两个单词逐字符比较的话,则肯定会超时。
一种优化策略是,将单词按照一定规则转化为二进制数,规则如下:
每个单词中的字母,都可以转化为相较于字母'a'的ASCII码偏移量,比如:
- 字母'b' 相较于 'a' 的偏移量是1
- 字母'c' 相较于 'a' 的偏移量是2
如果我们将这些偏移量想象为二进制数的位,那么一个单词就可以转化为一个二进制数,比如:
单词"abc",其中 'a' 的偏移量是0,'b'的偏移量是1, 'c'的偏移量是2
则可得二进制数 0000 0111
具体实现如下:
// 单词对应的二进制数 bit = 0