给定2个相同长度的二进制字符串a
和b
(例如111000
和110000
),是否可以检查{{1}中的所有设置位还使用按位运算在b
中设置?在上面的示例中,a
在位置1和2(从左到右)中有两个设置位,这些位也在b = 110000
中设置。
我可以按字符比较两个字符串,但这样会太慢。我知道我可以使用类似a = 111000
的字符串将字符串转换为数字,但我不知道用于实现任务的按位操作。
答案 0 :(得分:0)
只需比较字符:
for (int pos = 0; (pos = b.indexOf('1', pos)) != -1; ++pos) {
if (a.charAt(pos) != '1') {
return false;
}
}
return true;
b.indexOf('1', pos)
会从位置1
开始找到b
中的下一个pos
;只需检查a
中的相应字符是否也是1
。