二进制求和(LintCode)

二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。

样例

a = 11

b = 1

返回 100

细节出了好多问题,提交了好多次。。。

 1 public class Solution {
 2     /**
 3      * @param a a number
 4      * @param b a number
 5      * @return the result
 6      */
 7     public String addBinary(String a, String b) {
 8         int c = 0;
 9         int al = a.length() - 1;
10         int bl = b.length() - 1;
11
12         String s = "";
13         for(;al >= 0 && bl >= 0;al--,bl--) {
14             int ax = Integer.valueOf(a.substring(al,al + 1)).intValue();
15             int bx = Integer.valueOf(b.substring(bl,bl + 1)).intValue();
16             s = (ax + bx + c) % 2 + s;
17             c = (ax + bx + c) / 2;
18         }
19
20         if(bl >= 0) {
21             while(bl != -1) {
22                 int x = Integer.valueOf(b.substring(bl,bl + 1)).intValue();
23                 s = (c + x) % 2 + s;
24                 c = (c + x) / 2;
25                 bl--;
26             }
27         }
28
29         if(al >= 0) {
30             while(al != -1) {
31                 int x = Integer.valueOf(a.substring(al,al + 1)).intValue();
32                 s = (c + x) % 2 + s;
33                 c = (c + x) / 2;
34                 al--;
35             }
36         }
37
38         if(c != 0) {
39             s = c + s;
40         }
41
42         return s;
43     }
44 }

时间: 2024-12-25 10:50:26

二进制求和(LintCode)的相关文章

lintcode 容易题:Add Binary 二进制求和

题目: 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 样例 a = 11 b = 1 返回 100 解题: 和求两个链表的和很类似 考虑进位,考虑最后一项的进位 0+0 = 0 不需要进位 0+1 = 1 不需要进位 1+1 =0  进位 1 同时注意 低位进1,高位时1+1的情况,直接加就是3了,这个需要进位1 ,原位的结果也是1的情况 Java程序: public class Solution { /** * @param a a number * @param b a

【leetcode 简单】第十七题 二进制求和

实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842...,   由于返回类型是整数,小数部分将被舍去. #define PF(w) ((w)*(w)) int mySqrt(int x) { int start = 0; int end = x; double mid = 0; i

LeetCode67 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" //章节 - 数组和字符串 //三.字符串简介 //1.二进制求和 /* 算法思想: 这是常见题,思想大致相同.用两个指针分别

408 二进制求和

原题网址:https://www.lintcode.com/problem/add-binary/description 描述 给定两个二进制字符串,返回他们的和(用二进制表示). 您在真实的面试中是否遇到过这个题?  是 样例 a = 11 b = 1 返回 100 标签 二进制 字符串处理 思路1:直接按位相加,代码优化见:https://www.cnblogs.com/grandyang/p/5790441.html   大神就是大神,膜拜之 代码: string addBinary(st

LintCode_408 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示). 思路 string s = ""; 目标字符串 cp 存储进位;取 0或1 sum = a[i] + b[i] + cp;分为四种情况 0   s += '0'; cp = 0; 1 s += '1'; cp = 0; 2 s += '0'; cp = 1; 3 s += '1'; cp = 1; C++实现 string addBinary(string& a, string& b) { // Write your

Leetcode 67 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 解题思路 先将字符串转换为整数再转化为十进制数,进行相加后,再转换回二进制数 def addBinary(a, b): x=i

【leetcode 简单】第十六题 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" class Solution: def addBinary(self, a, b): """ :

leetcode 67. 二进制求和(Add Binary)

目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 解法: class Solution { public: str

【每天一题】LeetCode 67. 二进制求和

开源地址:https://github.com/jiauzhang/algorithms 题目描述 * https://leetcode-cn.com/problems/add-binary * 给定两个二进制字符串,返回他们的和(用二进制表示). * 输入为非空字符串且只包含数字 1 和 0. * * 示例 1: * 输入: a = "11", b = "1" * 输出: "100" * * 示例 2: * 输入: a = "1010