LintCode : 二进制表示
2016-12-03 14:59
357 查看
二进制表示
描述笔记
数据
评测
给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在 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; } }
相关文章推荐
- LintCode : 二进制表示
- LintCode 二进制表示
- LintCode 180-二进制表示
- [lintcode]二进制表示 ,Binary Representation
- 二进制表示-LintCode
- lintcode 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。
- 数数字二进制表示中1的个数
- 整数的二进制表示中1的个数
- 输入一个int型数据,计算出该int型数据在内存中存储时1的个数以及相应二进制表示
- 浮点数二进制表示法
- 编程之美---求N!的二进制表示中最低位1的位置
- 位运算-Number of 1 Bits(求一个十进制数字,它的二进制表示中有多少个 1(bit))
- 第28题:求整数的二进制表示中1的个数
- 浮点数的二进制表示
- 关于二进制浮点数的IEEE 754 浮点数的表示
- 巧妙计算一个数二进制表示法中1的位数
- C语言求一个整数的二进制形式表示中1的个数,用函数实现
- 数字二进制表示中1的个数
- 算法训练 6-2递归求二进制表示位数 ;求完数;求指数;字符串变换
- 2.3题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出