面试题 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(1)