博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Add Binary -- leetcode
阅读量:5214 次
发布时间:2019-06-14

本文共 2356 字,大约阅读时间需要 7 分钟。

Given two binary strings, return their sum (also a binary string).

For example,

a = “11”
b = “1”
Return “100”.

二进制相加,类同与字符串相加

#include 
#include
using namespace std;string addBinary(string a, string b) { int i = a.size() - 1;//字符串a的长度 int j = b.size() - 1;//字符串a的长度 int sum = 0;//当前位的和 int temp = 0;//进位标志 string ans;//结果字符串 while (i >= 0 && j >= 0) {
//从末位开始加操作 sum = (a[i--] - '0') + (b[j--] - '0') + temp; temp = sum / 2;//求出进位 sum %= 2;//求出当前位的值 ans.insert(ans.begin(), sum + '0');//插入到字符串的最前面 } //a字符串有剩余 while (i >= 0) { int sum = (a[i--] - '0' + temp); ans.insert(ans.begin(), (sum % 2) + '0'); temp = sum / 2; } //b字符串有剩余 while (j >= 0) { int sum = (b[j--] - '0' + temp); ans.insert(ans.begin(), (sum % 2) + '0'); temp = sum / 2; } //进位标示为1,再次进位 if (temp == 1) { ans.insert(ans.begin(), (temp + '0')); } return ans;}int main() { string s; string s1; while (cin >> s >> s1) { cout << addBinary(s, s1) << endl; } system("pause"); return 0;}

扩展:任意进制(<=10)的字符串相加:

#include 
#include
using namespace std;string addStr(string a, string b, int num) {
//num表示进位 int i = a.size() - 1;//字符串a的长度 int j = b.size() - 1;//字符串a的长度 int sum = 0;//当前位的和 int temp = 0;//进位标志 string ans;//结果字符串 while (i >= 0 && j >= 0) {
//从末位开始加操作 sum = (a[i--] - '0') + (b[j--] - '0') + temp; temp = sum / num;//求出进位 sum %= num;//求出当前位的值 ans.insert(ans.begin(), sum + '0');//插入到字符串的最前面 } //a字符串有剩余 while (i >= 0) { int sum = (a[i--] - '0' + temp); ans.insert(ans.begin(), (sum % num) + '0'); temp = sum / num; } //b字符串有剩余 while (j >= 0) { int sum = (b[j--] - '0' + temp); ans.insert(ans.begin(), (sum % num) + '0'); temp = sum / num; } //进位标示为1,再次进位 if (temp == 1) { ans.insert(ans.begin(), (temp + '0')); } return ans;}int main() { string s; string s1; int n; while (cin >> s >> s1) { cout << "请输入进制:"; cin >> n; cout << addStr(s, s1, n) << endl; cout << "------" << endl; } system("pause"); return 0;}

这里写图片描述

这里写图片描述

如有错误,欢迎指正,谢谢!

转载于:https://www.cnblogs.com/xiaocai-ios/p/7779751.html

你可能感兴趣的文章
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>
css样式写一个三角形
查看>>
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
事务备份还原分离附加
查看>>
JSch - Java实现的SFTP(文件上传详解篇)
查看>>
一些注意点
查看>>
.net 文本框只允许输入XX,(正则表达式)
查看>>
C#修饰符
查看>>
20.核心初始化之异常向量表
查看>>
[BSGS][哈希]luogu P3846 可爱的质数
查看>>
Python 第四十五章 MySQL 内容回顾
查看>>
iostat参数说明
查看>>
js 封装获取元素的第一个元素
查看>>
iOS 获取Home键指纹验证
查看>>
Python-Mac 安装 PyQt4
查看>>
P2571 [SCOI2010]传送带
查看>>