今天做了一题 leetcode:https://leetcode.cn/problems/aseY1I/ ,自己第一时间只想到暴力法,后来看官方题解,使用位掩码来简化。位掩码似乎是我的知识盲区,差缺补漏一下。
位掩码
位(big)掩码(mask),”位“指代着二进制数据当中的二进制位,而”掩码“指的是一串用于与目标数据进行按位操作的二进制数字。组合起来,就是”用一串二进制数字(掩码)去操作另一串二进制数字“的意思。
例如题中,要判断两个字符串是否有相同字符,使用26位二进制数表示一串字符串,存在该字符为1,不存在为0:
abcd....xyz
1101....001
那么,两个字符串是否存在相同字符,只需要将两串位掩码相与,即 A&B,只有没有相同字符时,A&B == 0 。
这是位掩码的用法之一,后续待补充。
标签:字符,二进制,....,一串,字符串,掩码 From: https://www.cnblogs.com/CassieLeeH/p/16757610.html