318  最大单词长度乘积 Medium

                                                                                                                                                  点击此处返回总目录

 

【题目】

318  最大单词长度乘积 Medium

 

【分析】

判断两个单词含不含有重复字母,可以将26个单词放到一个整型x的前26位中。

比如第1位为1代表有字母a,为0代表没有a。第2位为1代表有b,为0代表没有b。...依次类推。

 

 

怎么根据字母c设置x的某一位呢?

只要1左移c-'a'位即可。比如c='a',c-'a'=0,1<<0 为1。再比如c='c', c-'a'=2,1<<2为100,说明第二位有b。

 

因此,对于单词"abc",x为:

word = ['a','b','c']

x=1

for(char c:word){

    x = x | (1<<c-'a') ;

 

要使用按位或操作,是因为一个单词中可能出现相同的字母。本来是0,遇到1要变成1。本来是1,遇到1还是变成1。所以用"|"操作。

 

 

【代码】

318  最大单词长度乘积 Medium

 

 

 

 

【结果】

318  最大单词长度乘积 Medium