プログラマーインタビューゴールデンクラシック-インタビューの質問05.02。文字列へのバイナリ番号

1.トピックの紹介

バイナリ番号を文字列に変換します。0から1までの実数(0.72など)が与えられると、型はdoubleであり、そのバイナリ式を出力します。数値が0から1の間でない場合、または32ビット以内のバイナリで正確に表現できない場合は、「ERROR」が出力されます。

例1:

 入力:0.625
 出力: "0.101"
例2:

 入力:0.1
 出力:「エラー」
 プロンプト:0.1はバイナリで正確に表すことができません
プロンプト:

32ビットには、出力の2ビット「0.」が含まれます。

出典:LeetCode(LeetCode)
リンク:https ://leetcode-cn.com/problems/bianry-number-to-string-lcci
著作権はLeetCodeが所有しています商用の再版については、公式の承認に連絡してください。非商用の再版については、出典を示してください。

2つの問題解決のアイデア

       この質問を検討するために、「2を掛けて切り上げる」方法を使用して、10進数を2進数に変換します詳細については、コードを参照してください。

3つの問題解決コード

class Solution {
public:
    string printBin(double num) {
        if(num > 1 || num < 0)
            return "ERROR";
        string res = "0.";
        while(num > 0)
        {
            num *= 2; //小数部分不断乘2
            if(num >= 1)  //取出整数部分,添加到二进制小数的后边
            {
                res += "1";
                num--; //更新十进制小数
            }
            else
                res += "0";
            if(res.size() > 32)
                return "ERROR";
        }
        return res;
    }
};

4つの問題解決の結果

おすすめ

転載: blog.csdn.net/qq_39661206/article/details/108127442
おすすめ