LintCode : 二进制表示

    xiaoxiao2021-12-14  23

     二进制表示

     描述 笔记 数据 评测

    给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在 32 个字符之内来精确地表示,则返回 "ERROR"。

    您在真实的面试中是否遇到过这个题?  Yes 样例

    n = "3.72", 返回 "ERROR".

    n = "3.5", 返回 "11.1".

    标签  相关题目  很明显就是将整数小数部分拆分,然后分别求出2进制整数部分2进制:%2,向右移动一位循环小数部分2进制:和1比较,向左移动一位public class Solution { /** * @param n: * Given a decimal number that is passed in as a string * @return: A string */ public String binaryRepresentation(String n) { // write your code here String result = ""; if (n == null || n.length() == 0) { return result; } String spilt[] = n.split("\\."); if (spilt.length == 1) { result = binaryInteger(new Integer(spilt[0])); } else if (spilt.length == 2) { String floatBinary = binaryFloat(new Double("0." + spilt[1])); if (floatBinary.equals("ERROR")) { result = "ERROR"; } else if ("".equals(floatBinary) || "0".equals(floatBinary)) { result = binaryInteger(new Integer(spilt[0])); } else { result = binaryInteger(new Integer(spilt[0])) + "." + floatBinary; } } return result; } public String binaryInteger(Integer num) { String result = ""; if (num <= 0) { result = "0"; return result; } while (num > 0) { result = num % 2 + result; num = num / 2; } return result; } public String binaryFloat(double num) { String result = ""; if (num >= 1 || num < 0) { return result; } if (num == 0) { result = "0"; return result; } while (num>0) { if (result.length() > 32) { result = "ERROR"; break; } num = num * 2; if (num >= 1) { result += "1"; num -= 1; } else { result += "0"; } } return result; } }
    转载请注明原文地址: https://ju.6miu.com/read-969698.html

    最新回复(0)