自学内容网 自学内容网

力扣3226 使两个整数相等的位更改次数

写的代码:

class Solution {
public:
    string cc(int num){
        string res="";
        while(num>0){
            int r=num % 2;
            res=static_cast<char>(48+r)+res;
            num/=2;
        }
        return res;
    }
    int minChanges(int n, int k) {
        int res=0;
        string n2=cc(n);
        string k2=cc(k);
        int n_size=n2.size();
        int k_size=k2.size();
        
        if(k_size>n_size){
            return -1;
        }else{
            for(int i=0;i<k_size;i++){
                if(n2[n_size-i-1]=='0' && k2[k_size-i-1]=='1')
                return -1;
                else if(n2[n_size-i-1]=='1' && k2[k_size-i-1]=='0')
                 res++;
            }
        }
        for(int i=0;i<n_size-k_size;i++){
            if(n2[i]=='1'){res++;}
        }
        
        return res;
    }
};

数字转字符 static_cast<char> 或者用 to_string()也可以


原文地址:https://blog.csdn.net/m0_75015083/article/details/140604108

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!