首页 > 其他分享 >面试题 05.02. 二进制数转字符串

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

时间:2023-04-08 18:46:10浏览次数:48  
标签:面试题 return 二进制 05.02 num value ans frac 数转

题目链接:面试题 05.02. 二进制数转字符串

方法:找规律

解题思路

(1)题目要求:将一个\(0-1\)之间的实数通过二进制进行表示,并通过字符串形式输出。
(2)由于二进制的小数只能表示\(\frac{1}{2} \frac{1}{4} \frac{1}{8} ... \frac{1}{2^n}\)数之间的和的十进制小数,因此有些十进制小数不能通过二进制进行表示,结果就返回\(ERROR\)。
(3)现在假设能被二进制小数表示,那么二进制的每一位可能为\(0 / 1\),\(value\) = 当前位置置1的十进制的值,当\(num > value\)时那么当前位置置\(1\),否则置\(0\)(返回\(str +=\) '\(0\)' \(/\) '\(1\)'),然后\(num -= value\),检查下一位的情况,直到\(6\)位检查完,若\(num != 0\),说明不能转换,否则返回\(str\)。

代码

class Solution {
public:
    string printBin(double num) {
        double value = 1.0;
        int i = 1;
        string ans = "0.";
        while (num != 0.0 && i <= 6) {
            value /= 2.0;
            if (num >= value) {
                num -= value;
                ans += "1";
            } else {
                ans += "0";
            }
            i ++ ;
        }
        if (num != 0.0) return "ERROR";
        else return ans;
    }
};
// 另一种思路(意思相同)
class Solution {
public:
    string printBin(double num) {
        string ans = "0.";
        for(int i = 1; i <= 6; i ++ ) {
            num *= 2;
            if (num >= 1) {
                num -= 1;
                ans += "1";
            } else {
                ans += "0";
            }
            if (num == 0) return ans;
        }
        return "ERROR";
    }
};

复杂度分析

时间复杂度:\(O(1)\);
空间复杂度:\(O(1)\)。

标签:面试题,return,二进制,05.02,num,value,ans,frac,数转
From: https://www.cnblogs.com/lxycoding/p/17298984.html

相关文章

  • #yyds干货盘点# LeetCode面试题:爬楼梯
    1.简述:假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.1阶......
  • 面试题百日百刷-HBase中HTable API有没有线程安全问题,在程序是单例还是多例?
    锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题: 1.HBase内部机制是什么?Hbase是一个能适应联机业务的数据库系统物理存储:hbase的持久化数据是将数据存储在HDFS上。存储管理:一个表是划分为很多region的,这些region分布式地......
  • 面试题百日百刷-HBase HRegionServer宕机如何处理
    锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题: 1.HBase......
  • [每天例题]计算日期到天数转换
    计算日期到天数转换题目  题目要求根据输入的日期,计算是这一年的第几天。保证年份为4位数且日期合法。思路分析判断闰年方法:1.年份可以被4整除,不能被100整除。2.年份可以被400整除。方法一(forif配套)1.使用for循环不断将month前month天数相加,等到了month则直接加day......
  • 免费分享前端面试题,vue面试题,TypeScript基础知识点 PDF格式
    免费分享前端资料,面试题,电子书接前端开发,带徒弟,一对一教学,远程协助,bug修改微信:......
  • #yyds干货盘点# LeetCode面试题:x 的平方根
    1.简述:给你一个非负整数x,计算并返回 x 的算术平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。注意:不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x**0.5。 示例1:输入:x=4输出:2示例2:输入:x=8输出:2解释:8的算术平方根是2.82842...,由......
  • Web前端开发必看的100道大厂面试题
    1.说说gulp和webpack的区别开放式题目Gulp强调的是前端开发的工作流程。我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让Gulp执行这些task,从而构建项目的整个前端开发流程。通俗一点来说,“Gulp就像是一......
  • 力扣 面试题 10.11. 峰与谷
    面试题10.11.峰与谷在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5,8,4,2,3,4,6}中,{8,6}是峰,{5,2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例:输入:[5,3,1,2,3]输出: [......
  • 前端常见面试题笔记
    /***防抖*一段时间内触发重新计时*/functiondebounce(func,delay){lettimer=null;returnfunction(){if(timer)clearTimeout(timer)timer=setTimeout(()=>{//箭头函数直接继承父级作用域所以可...argumnets......
  • java面试题学习记录2
    1.索引的分类 主键索引,联合索引,唯一索引,全文索引,普通索引2.锁的分类 行锁:操作数据库时,锁定整行数据 表锁:操作数据库时,锁定整表数据 乐观锁:多线程情况下,认为其他线程不会去修改的数据,所以不会上锁,但是会在跟新时,判断一下数据有没有被改变,可以用版本号机制 悲......