Maximum Product of Word Lengths
题意
给定一个字符串数组,找出一对字符串,下标为i,j,求length(word[i])*length(word[j])最大,当word[i]和word[j]没有公共的字符情况下。
解法
还是通过位运算来进行计算,,位运算真的很神啊。。。
我们用 1<<(x-‘a’)来将每个字母转换为二进制表示,然后把整个字符串的每个这种二进制进行或运算,得到的结果就是将该字符串中所有字母对应的二进制位都置为1,这样整个结果就能代表该字符串了。当然,也有可能两个字符串的二进制表示是一样的,比如’ab’和’abab’,那么我们可以只记录后面那个字符串对应的值,因为它长度较长,得到的结果肯定更优。 这个二进制和长度之间的关系可以用字典来记录。
最后如果两个字符串的二进制与的结果为0,说明它们之间的字符没有交集,计算它们的len1*len2即可。
代码
|
|