1009 十進制整數的反碼 leetcode

每一個非負整數 N 都有其二進制表示。例如, 5 能夠被表示爲二進制 「101」,11 能夠用二進制 「1011」 表示,依此類推。注意,除 N = 0 外,任何二進制表示中都不含前導零。web

二進制的反碼錶示是將每一個 1 改成 0 且每一個 0 變爲 1。例如,二進制數 「101」 的二進制反碼爲 「010」。svg

給定十進制數 N,返回其二進制表示的反碼所對應的十進制整數。.net

示例 1:code

輸入:5
輸出:2
解釋:5 的二進制表示爲 「101」,其二進制反碼爲 「010」,也就是十進制中的 2 。
示例 2:xml

輸入:7
輸出:0
解釋:7 的二進制表示爲 「111」,其二進制反碼爲 「000」,也就是十進制中的 0 。
示例 3:get

輸入:10
輸出:5
解釋:10 的二進制表示爲 「1010」,其二進制反碼爲 「0101」,也就是十進制中的 5 。it

提示:io

0 <= N < 10^9class

class Solution {
public:
    int bitwiseComplement(int N) {
        vector<int>v;
         vector<int>r;
        int x,y=0,z;
        if(!N)
            return 1;
        while(N)
        {
             x=N%2;
            v.push_back(x);
             N/=2; 
        }
        while(!v.empty())
        {z=v.back();
         if(z)
             z=0;
         else
             z=1;
         v.pop_back();
         r.push_back(z);   
        }
        int i;
        for(i=0;i<r.size();i++)
            if(r[i])
                break;
     for(int j=r.size()-1, k=0;j>=i;j--) 
         y+=r[j]*pow(2,k++);
        
        return y;
    }
};

N=0,必定要額外拿出來單獨考慮,由於它無法進入第一個while,
就不能處理了。webkit

本文分享 CSDN - 希境。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索