[LeetCode]34. Add Binary二进制相加
2015-10-23 10:09
267 查看
Given two binary strings, return their sum (also a binary string).
For example,
a =
b =
Return
解法:从后往前对两个string相加即可。注意将char转换为int,注意进位,注意结果顺序。
或者直接使用string的insert成员函数:
For example,
a =
"11"
b =
"1"
Return
"100".
解法:从后往前对两个string相加即可。注意将char转换为int,注意进位,注意结果顺序。
class Solution { public: string addBinary(string a, string b) { int as = a.size(), bs = b.size(); if (bs > as) return addBinary(b, a); int i = as - 1, j = bs - 1, carry = 0; string res = ""; while (i >= 0) { int curr = (int)(a[i] - '0') + carry + (j >= 0 ? (int)(b[j] - '0') : 0); res += (char)(curr % 2 + '0'); carry = curr / 2; i--; j--; } res = carry == 1 ? res + '1' : res; reverse(res.begin(), res.end()); return res; } };
或者直接使用string的insert成员函数:
class Solution { public: string addBinary(string a, string b) { int as = a.size(), bs = b.size(); if (bs > as) return addBinary(b, a); int i = as - 1, j = bs - 1, carry = 0; string res = ""; while (i >= 0) { int curr = (int)(a[i] - '0') + carry + (j >= 0 ? (int)(b[j] - '0') : 0); res.insert(0, 1, (char)(curr % 2 + '0')); carry = curr / 2; i--; j--; } res = carry == 1 ? res.insert(0, 1, '1') : res; return res; } };
相关文章推荐
- 正则表达式
- 使用windbg排查各种应用程序报错
- windows numpy包安装
- 初识 Gallery
- 欧洲行-签证办理
- IOS开发常用的正则表达式
- Android官方提供的支持不同屏幕大小的全部方法
- JAVA学习4_更新JDK后,需要对已安装软件的配置做出什么修改?
- pb SendMessage
- 垂直的seekbar
- linux系统下创建oracle表空间和用户权限查询。转自http://www.2cto.com/os/201212/173801.htmllinux系统下创建oracle表空间和用户权限查询 创
- 【图文详细】使用Eclipse编译运行MapReduce程序_Hadoop_2.4.1
- 如何在Quagga BGP路由器中设置IPv6的BGP对等体和过滤
- 一分钟理解“工厂模式”
- uva10720(Graph Construction)贪心+havel定理
- Mysql学习笔记之常用数据类型
- 将一个数组快速反序排列
- 学习Git--lesson 1_Fundamental Git workflow
- yum install
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)