zoukankan      html  css  js  c++  java
  • LintCode Binary Representation

    Given a (decimal - e.g. 3.72) number that is passed in as a string, return the binary representation that is passed in as a string. If the fractional part of the number can not be represented accurately in binary with at most 32 characters, return ERROR.
    Have you met this question in a real interview? Yes
    Example
    For n = "3.72", return "ERROR".
    For n = "3.5", return "11.1".

    class Solution {
    public:
        /**
         *@param n: Given a decimal number that is passed in as a string
         *@return: A string
         */
        string binaryRepresentation(string n) {
            // wirte your code here
            int integer = 0;
            int pos = 0;
            int len = n.size();
            string res;
            while (pos < len && n[pos] != '.') {
                integer = integer * 10 + n[pos] - '0';
                pos++;
            }
            while (integer) {
                res.push_back((integer & 0x1) + '0');
                integer /= 2;
            }
            reverse(res.begin(), res.end());
            
            if (res.empty()) {
                res.push_back('0');
            }
            int int_part  = res.size();
            res.push_back('.');
            
            string f = n.substr(pos + 1);
            int end = f.size();
            int count = 0;
            bool zero = true;
            for (;end > 0;) {
                int carry = 0;
                for (int i = end - 1; i >= 0; i--) {
                    int d = 2 * (f[i] - '0') + carry;
                    f[i] = d % 10 + '0';
                    carry = d / 10;
                }
                res.push_back(carry + '0');
                if (carry) {
                    zero = false;
                }
                if (++count > 32) {
                    return "ERROR";
                }
                while (end > 0 && f[end - 1] == '0') end--;
            }
            if (zero) {
                return res.substr(0, int_part);
            }
            return res;
        }
        
        
    };
    

    写起来有点啰嗦

  • 相关阅读:
    七、Struts2之文件上传与下载
    八、Struts2之OGNL
    五、Struts2之类型转换
    wpf坐标转换相关
    wpf拖拽封装类
    获取Bitmap的Graphics
    Win32定时器
    vs2010调试dll
    使用GDI+ 保存HDC为位图文件
    在c++中使用.net
  • 原文地址:https://www.cnblogs.com/lailailai/p/4808979.html
Copyright © 2011-2022 走看看