加载中...
面试题 05.02-二进制数转字符串(Bianry Number to String LCCI)
发表于:2021-12-03 | 分类: 中等
字数统计: 438 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/bianry-number-to-string-lcci

英文原文

Given a real number between 0 and 1 (e.g., 0.72) that is passed in as a double, print the binary representation. If the number cannot be represented accurately in binary with at most 32 characters, print "ERROR".

Example1:

 Input: 0.625
 Output: "0.101"

Example2:

 Input: 0.1
 Output: "ERROR"
 Note: 0.1 cannot be represented accurately in binary.

Note:

  1. This two charaters "0." should be counted into 32 characters.

中文题目

二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。

示例1:

 输入:0.625
 输出:"0.101"

示例2:

 输入:0.1
 输出:"ERROR"
 提示:0.1无法被二进制准确表示

提示:

  1. 32位包括输出中的"0."这两位。

通过代码

高赞题解

一.思路

十进制的小数转换为二进制小数,主要是利用小数部分乘2后,取整数部分,直至小数点后为0

二.代码

class Solution {
public:
    string printBin(double num) {
        string ans = "0.";
        while (num != 0) {
            num *= 2;
            if (num >= 1) { //乘2后num>=1,说明此时整数部分为1,取完该整数部分1后,num接着利用的还是其小数部分,所以要减掉整数部分(即1)
                ans += "1";
                num -= 1;
            } else { //小于1说明整数部分为0,取该整数部分0
                ans += "0";
            }
            if (ans.size() > 32) return "ERROR";
        }
        return ans;
    }
};

统计信息

通过次数 提交次数 AC比率
8170 11770 69.4%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
面试题 08.13-堆箱子(Pile Box LCCI)
下一篇:
面试题 04.10-检查子树(Check SubTree LCCI)
本文目录
本文目录