位掩码

​ 今天做了一题 leetcode:https://leetcode.cn/problems/aseY1I/ ,自己第一时间只想到暴力法,后来看官方题解,使用位掩码来简化。位掩码似乎是我的知识盲区,差缺补漏一下。

位掩码

​ 位(big)掩码(mask),”位“指代着二进制数据当中的二进制位,而”掩码“指的是一串用于与目标数据进行按位操作的二进制数字。组合起来,就是”用一串二进制数字(掩码)去操作另一串二进制数字“的意思。

例如题中,要判断两个字符串是否有相同字符,使用26位二进制数表示一串字符串,存在该字符为1,不存在为0:

abcd....xyz

1101....001

那么,两个字符串是否存在相同字符,只需要将两串位掩码相与,即 A&B,只有没有相同字符时,A&B == 0 。

这是位掩码的用法之一,后续待补充。

posted @ 2022-10-06 14:51  Cassie_Lee  阅读(279)  评论(0)    收藏  举报