zoukankan      html  css  js  c++  java
  • 二进制求和

     c++:

    class Solution {
    public:
        string addBinary(string a, string b) {
            if(a == "") return b;
            if(b == "") return a;
            int i = a.size() - 1;
            int j = b.size() - 1;
            int c = 0;//进位
            string temp;
            while(i>=0 || j >=0 )
            {
                if(i>=0) c+= a[i--] - '0';
                if(j>=0) c+=b[j--] - '0';
                temp += to_string(c%2);
                c >>= 1; 
            }
            reverse(temp.begin(),temp.end());
            string ans = temp;
            return c > 0 ? '1'+ans : ans;
        }
    };

    c:

    #define MAX_SIZE 100
    
    char *addBinary(char *a, char *b) {
        // 结果字符串
        char *res = (char *) malloc(sizeof(char) * MAX_SIZE);
        memset(res, 0, sizeof(char) * MAX_SIZE);
        int i, j, tmp, k = 0, len = 0;
        for (i = strlen(a) - 1, j = strlen(b) - 1; i >= 0 || j >= 0; i--, j--) {
            // 对位相加
            tmp = (i >= 0 ? a[i] - '0' : 0) + (j >= 0 ? b[j] - '0' : 0) + k;
            res[len++] = tmp % 2 + '0';
            k = tmp / 2;
        }
        // 处理最高位的进位
        while (k > 0) {
            res[len++] = k % 2+ '0';
            k = k / 2;
        }
        res[len] = '';
        // 字符串翻转
        for (i = 0; i < len / 2; ++i) {
            char temp = res[len - i - 1];
            res[len - i - 1] = res[i];
            res[i] = temp;
        }
        return res;
    }
  • 相关阅读:
    Tree UVA
    stringstream的使用
    Trees on the level UVA
    strchr和strstr函数
    sscanf的用法
    Dropping Balls UVA
    Boxes in a Line UVA
    Broken Keyboard (a.k.a. Beiju Text) UVA
    Matrix Chain Multiplication (堆栈)
    出栈次序
  • 原文地址:https://www.cnblogs.com/ranzhong/p/14328110.html
Copyright © 2011-2022 走看看