给定一个字符串数组 words(如:[“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]),判断其中任两个单词间是否含有公共字符。
解决思想是预计算所有单词的位掩码存在数组中后任取比较。
n = len(words)
bit_expression = [0]*n #表示单词位掩码的数组
bit_value = lambda x : ord(x) - ord('a') #左移次数
for i in range(n):
bit_sample = 0
for ch in words[i]:
bit_sample |= 1 << bit_value(ch)
bit_expression[i] = bit_sample
if(bit_expression[i] & bit_expression[j] == 0):
print("含有公共字符")