• 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;
        }
        
        
    };
    

    写起来有点啰嗦

  • 相关阅读:
    silverlight的TranslateTransform 的使用
    720 JavaScript函数的this指向
    JavaScript数组
    JavaScriptDOM事件
    JavaScript流程控制语句
    CSS布局案例
    JavaScriptDOM基础
    JavaScriptDOM事件
    JavaScript基础语法
    JavaScript的String对象相关方法
  • 原文地址:https://www.cnblogs.com/lailailai/p/4808979.html
Copyright © 2020-2023  润新知