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。所以用"|"操作。
【代码】
【结果】
|