数组中使用 int 中的位的不同元素数

Number of distinct elements in array using bits in int

本文关键字:元素 int 数组      更新时间:2023-10-16

我有这个代码
我的代码出了什么问题它必须显示有多少个不同的元素

string name;
long long maps;
int i,j,test,l,counts=0,k;
cin>>test;
for(i=0;i<test;i++){
        counts=maps=0;
        cin>>name;
        l = name.length();
        for(j=0;j<l;j++){
            k=(toupper(name[j])-'A');
            cout<<endl<<(maps&(1<<k))<<" "<<k;
            if(0 == maps&(1<<k)){
                    counts++;
                    maps|=(1<<k);
            }else{
                cout<<" "<<(int)(maps&(1<<k))==0;
            }
        }
        cout<<counts;
}

有什么问题检查输出,我找不到为什么我不工作

问题就在这里:

if(0 == maps&(1<<k)){

相等运算符==的优先级高于按位 AND 运算符&。 所以上面的评估是这样的:

if ((0 == maps) & (1 << k )) {

您需要添加括号才能获得所需的行为:

if (0 == (maps & (1 << k))) {

您需要在cout通话中执行相同的操作:

cout<<" "<<(int)((maps&(1<<k))==0);
相关文章: