c++ - 对于 c++ 集合,set.size()&1 是什么?
问题描述
这是代码,它返回“忽略他!” 当尺寸奇数时
#include <set>
std::set<char> s;
int main(){
char c;
while(std::cin>>c)s.insert(c);
std::cout<<(s.size()&1?"IGNORE HIM!":"CHAT WITH HER!");
return 0;
}
解决方案
您已经注意到了这种模式,即set.size()&1
当大小为奇数时是正确的。
对数字执行按位与 ( &
) 会将所有位设置为 0,除了最后一位(如果为 1)。当数字为奇数时,最后一位仅为 1。
例如
101100 // even
& 000001
= 000000 // false
101101 // odd
& 000001
= 000001 // true
推荐阅读
- wordpress - 图像未填充宽度屏幕
- javascript - 如何替换 iframe 标记内的子字符串
- c# - 执行私有方法时无法切换到 Unicode 错误
- java - java.net.ConnectException:从Jenkins部署战争到tomcat时连接被拒绝(连接被拒绝)
- c - C - 格式指定类型“int”,但参数的类型为“char *”[-Wformat]
- c# - C# 从 JSON 响应创建 Deedle DataFrame
- python - 如何从烧瓶中的用户输入中获取表名?
- vert.x - vertx 的自定义指标
- python-3.x - 将“.csv”文件从 Google 驱动器导入 Jupyter 笔记本
- java - 仅通过 Android Studio 中的意图打开电子邮件应用程序