面试题 05.02. 二进制数转字符串
二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。
要996了
-
思路:十进制的小数部分转化为二进制采用乘2取整,顺序排列的方法,如果字符串长度大于32则返回“ERROR”,否则返回最终结果
-
实现
class Solution { public String printBin(double num) { StringBuilder sb = new StringBuilder(); sb.append("0."); while(num > 0){ if (sb.length() == 32) return "ERROR"; num *= 2; sb.append(String.valueOf((int)num)); num %= 1; } return sb.toString(); } }-
复杂度
-
时间复杂度:O(n)O(n)O(n)
-
空间复杂度:O(1)O(1)O(1)
-
-

该问题涉及将0到1之间的double类型浮点数转换为其二进制表示,使用乘2取整法。若超过32位则返回ERROR。提供的解决方案中,创建一个StringBuilder,不断将小数部分乘2并取整,添加至结果字符串,直到数字变为0。时间复杂度为O(n),空间复杂度为O(1)。
701

被折叠的 条评论
为什么被折叠?



