字符串加法C++

字符串加法

http://www.nowcoder.com/questionTerminal/829ae8987a424bd6b9a95a240ebdb0e3

字符串加法问题:
1.当输入的二进制字符串长度不相等时,较短字符串前面补0,使得两字符串长度相等;
2.从后向前遍历字符串a和字符串b(此时两字符串长度相等):
****此时根据字符串a和字符串b中具体对应的字符分情况讨论:

if (a[i]=='0') && (b[i]=='0')
    if(前一个相加产生进位)
        result += '1';
        进位标志为false;
    else
        result +='0';
        进位标志为false;
else if (a[i]=='0') && (b[i]=='1')
    ...
else if (a[i]=='1') && (b[i]=='0')
    ...
else
    ...

3.若此时进位标志为true,则 result += '1'
4.上述计算的result为逆序结果,此时逆序输出即为所求.

下面为代码实现:

#include <iostream>
#include <string>

using namespace std;

int main(){
    string a,b;
    cin>>a>>b;//输入字符串a和b
    //如果a与b字符串长度不相等
    int aLength=a.size();
    int bLength=b.size();
    while(aLength > bLength){
        b = '0'+b;
        bLength++;
    }
    while(aLength < bLength){
        a = '0'+a;
        aLength++;
    }
    //此时,字符串a与字符串b长度相等
    bool over_flag=false;
    string result;
    for(int i=aLength-1; i>=0; i--){
        if((a[i]=='0') && (b[i]=='0')){
            if(over_flag == true){
                result += '1';
            }
            else{
                result += '0';
            }
            over_flag=false;
        }
        else if((a[i]=='0') && (b[i]=='1')){
            if(over_flag == true){
                result += '0';
                over_flag=true;
            }
            else{
                result += '1';
                over_flag=false;
            }
        }
        else if((a[i]=='1') && (b[i]=='0')){
            if(over_flag == true){
                result += '0';
                over_flag=true;
            }
            else{
                result += '1';
                over_flag=false;
            }
        }
        else{    //a[i]=='1 && b[i]=='1'
            if(over_flag == true){
                result += '1';
            }
            else{
                result += '0';
            }
            over_flag=true;
        }
    }
    if(over_flag == true){
        result += '1';
    }
    for(int j=result.size()-1; j>=0; j--){
        cout<<result[j];
    }
    return 0;
}
全部评论

相关推荐

死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务