首页 > 其他分享 >力扣面试题 - 25 二进制数转字符串

力扣面试题 - 25 二进制数转字符串

时间:2024-11-22 10:48:54浏览次数:3  
标签:25 面试题 二进制 32 力扣 length num result ERROR

题目:

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

示例1:

 输入:0.625
 输出:"0.101"

示例2:

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

提示:

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

思路:

  1. 首先需要知道小数点是如何转二进制的(乘2取整),不了解的同学可以看看这篇博客。小数的二进制表示-CSDN博客
  2. 那这道题应该怎么做呢?我们可以先定义一个字符数组用来存储结果。然后将num乘2,如果大于1,那么结果数组写入1,否则写入0。同时需要记录长度。
  3. 如果该数能被准确表示,那么他最后的小数部分最后会变为0。否则则是不能被准确表示。
  4. 同时,如果长度大于了32,那么他也算不能准确表示。
  5. 所有都判断完后,那么返回结果字符串,得解。

C代码如下:

char* printBin(double num) {
    // 检查输入是否合法
    if (num <= 0 || num >= 1) {
        return "ERROR";
    }

    // 用于存储结果的静态字符数组
    static char result[34]; // 最多 32 位 + '\0'
    strcpy(result, "0.");   // 初始化为 "0."

    // 转换逻辑
    int length = 2; // 当前长度,包含 "0."
    while (num > 0) {
        // 如果长度超过 32 位,则返回 ERROR
        if (length >= 32) {
            return "ERROR";
        }

        // 计算下一位
        num *= 2;
        if (num >= 1) {
            result[length++] = '1'; // 添加 '1'
            num -= 1;               // 减去整数部分
        } else {
            result[length++] = '0'; // 添加 '0'
        }
    }

    // 添加字符串结束符
    result[length] = '\0';
    return result;
}

标签:25,面试题,二进制,32,力扣,length,num,result,ERROR
From: https://blog.csdn.net/chamao_/article/details/143965277

相关文章

  • 力扣面试题 23 - 动物收容所
    题目:动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创......
  • 2024-2025-1 20241305 《计算机基础与程序设计》第九周学习总结
    作业信息这个作业属于哪个课程[2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里2024-2025-1计算机基础与程序设计第九周作业这个作业的目标1、操作系统责任2、内存与进程管理3、分时系统4、CPU调......
  • 20.有效的括号-力扣(LeetCode)
    题目:解题思路:    首先要明确一个问题:配对的左右括号不一定是相邻的,例如:([])。    由上述,'(','[','{'可能不会在遍历整个字符串的过程中,立即找到配对的括号。括号的配对原则是:当遍历到右括号时去看后出现的左括号是否与之配对,那么很容易想到满足后进先出......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛25
    Rank极限了,感觉还行感觉T3不是一般人可做的,遂先来写赛记。A.图签。本来不是很一眼的,但看到给了这个和这个然后就很一眼了。用longlong状压每个点所有操作下是否属于S/T集合的状态,那么发现对于一条边\((i,j)\),只有某一次操作满足\(i\inS\)且\(j\inT\)......
  • 1025 PAT Ranking(模拟、排序)
     方法一:先对总榜按要求进行排序,再遍历总榜时持续维护绝对排名和相对排名并输出即可 方法二:结构体中包含本地排名,在每输入一个测试点的数据以后就进行局部排序,得到本地排名,再将局部信息push到总榜中,再对总榜进行排序,直接输出即可。方法一需要多开三个数组来维护本地排名信息,空......
  • 阿里巴巴技术面试题-第五篇
    说在前面本篇文章是阿里技术面试题目汇总第五篇。后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。欢迎大家点赞关注转发。往期回顾题目1:一颗现代处理器,每秒大概可以执行多少条简单的MOV指令,有哪些主要的影响因素?出题人:阿里巴巴......
  • 互联网大厂技术面试题-阿里篇(四)
    题目1:有一批气象观测站,现需要获取这些站点的观测数据,并存储到Hive中。但是气象局只提供了api查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?出题人:阿里巴巴出题专家:江岚/阿里巴巴数据技术高级技术专家参考答案:A.通过shell或python等调用......
  • 20222414 2024-2025-1《网络与系统攻防技术》实验五实验报告
    1.实验要求(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册人及联系方式IP地址所在国家、城市和具体地理位置PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工具进行搜集信......
  • 257. 二叉树的所有路径 Golang实现
    题目描述:给你一个二叉树的根节点root,按任意顺序,返回所有从根节点到叶子节点的路径。叶子节点是指没有子节点的节点。输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]思路分析:这个题一眼回溯,回溯和递归其实也是紧密相关的。1.确定回溯函数的参数(1.root2.一个路径3......
  • 2025 年 AMC8 竞赛难度预测!备考的学生赶快收藏!
    距离2025年AMC8竞赛开考已不足三个月,季遇教育老师依据往年AMC8竞赛的考点分布状况以及AMC8获奖分数线,对2025年AMC8竞赛难度进行了一番前瞻性预判,正在备赛AMC8的同学可供参考!AMC8竞赛近十年获奖分数线从近几年的AMC8竞赛题目难度和获奖分数线来看,近几年......