当前位置: 首页 > news >正文

LeetCode 面试题 05.02. 二进制数转字符串

【LetMeFly】面试题 05.02.二进制数转字符串

力扣题目链接:https://leetcode.cn/problems/bianry-number-to-string-lcci/

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

示例1:

 输入:0.625
 输出:"0.101"

示例2:

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

 

提示:

  • 32位包括输出中的 "0." 这两位。
  • 题目保证输入用例的小数位数最多只有 6

方法一:模拟:乘2取余

这道题比较“便民”的是,二进制长度超过32则输出ERROR。因此我们就不需要判断是否为“无限小数”了。

每次将num乘以2,如果num的个位是1,则将1添加到答案末尾(num−=1num -= 1num=1);否则将0添加到答案末尾。

如此往复,直到num为0(转换完成)或答案的长度到达32(强制结束转换,转换失败)

  • 时间复杂度O(C)O(C)O(C),其中CCC是转换为二进制后的字符串长度。C≤31C\leq 31C31
  • 空间复杂度O(C)O(C)O(C),当返回ERROR时需要占据32个char大小的空间

AC代码

C++

class Solution {
public:string printBin(double num) {string ans = "0.";while (true) {num *= 2;int thisVal = num >= 1;ans += (char)('0' + thisVal);num -= thisVal;if (num == 0) {return ans;}if (ans.size() == 32) {return "ERROR";}}}
};

Python

class Solution:def printBin(self, num: float) -> str:ans = "0."while True:num *= 2thisVal = num >= 1ans += chr(ord('0') + thisVal)num -= thisValif num == 0:return ansif len(ans) == 32:return "ERROR"

What’s more

本题无输入为“0”的测试样例,截至当前(2023.3.2 9:53),在控制台输入0时得到的答案是“0.”。但其实答案为“0”比较好

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/129295125

http://www.lryc.cn/news/26160.html

相关文章:

  • [MatLab]图像绘制
  • datax导入到hive的数据量翻倍
  • 拿下3个大厂offer的软件测试面试宝典,面试一文搞定
  • 长短记忆神经网络(LSTM,Long Short-Term Memory)
  • Makefile学习2
  • 【字符串】leetcode28. 实现 strStr()(C/C++/Java/Python/Js)
  • 游戏开发是个“坑”,而且是个“天坑”
  • 剑指 Offer 64. 求 1 + 2 + … + n(java解题)
  • 2022 年度_职业项目总结_Java技术点归纳
  • 【项目实战】32G的电脑启动IDEA一个后端服务要2min,谁忍的了?
  • 接口自动化面试题汇总(持续更新)
  • SpringBoot实现静态资源映射,登录功能以及访问拦截验证——以黑马瑞吉外卖为例
  • PythonWeb Django PostgreSQL创建Web项目(三)
  • 【Visual Studio】git提交代码时使用GPG
  • 【反序列化漏洞-02】PHP反序列化漏洞实验详解
  • Gateway网关的使用
  • 【LeetCode】背包问题总结
  • Java的开发工具有哪些?这十款工具大厂都在用!
  • web学习-Node.js入门学习
  • 100 eeeee
  • 物盾安全汤晓冬:工业互联网企业如何应对高发的供应链安全风险?
  • 微纳制造技术——基础知识
  • Makefile的使用
  • RealBasicVSR模型转成ONNX以及用c++推理
  • C语言作用域(变量生存的空间)学习
  • Spark性能优化一 概念篇
  • [数据结构]:09-二分查找(顺序表指针实现形式)(C语言实现)
  • 3.基于Label studio的训练数据标注指南:文本分类任务
  • Python进阶-----面向对象3.0(面对对象三大特征之---封装)
  • 软考中级软件设计师备考建议