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。所以用"|"操作。

 

 

【代码】

 

 

 

 

【结果】

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值