点击此处返回总目录

 

【题目】

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

 

 

 

 

 

相关文章:

  • 2022-03-07
  • 2022-12-23
  • 2022-01-26
  • 2021-07-19
  • 2022-03-10
猜你喜欢
  • 2021-09-04
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2021-04-01
  • 2022-02-12
  • 2022-12-23
相关资源
相似解决方案