当前位置: 首页 > news >正文

销售网站模板免费下载公司主页网站设计

销售网站模板免费下载,公司主页网站设计,广州冼村在哪个区,企业线上推广公司题目描述 给你两个二进制字符串 a 和 b,以二进制字符串的形式返回它们的和。 示例 1: 输入: a "11", b "1" 输出: "100"示例 2: 输入: a "1010", b "1011" 输出: "10101"提示: 每个字符串仅由…

题目描述

给你两个二进制字符串 ab,以二进制字符串的形式返回它们的和。

示例 1:

输入: a = "11", b = "1"
输出: "100"

示例 2:

输入: a = "1010", b = "1011"
输出: "10101"

提示:

  1. 每个字符串仅由字符 '0''1' 组成。
  2. 每个字符串都不会包含前导零,除了 “0” 本身。
  3. 1 ≤ a . l e n g t h , b . l e n g t h ≤ 1 0 4 1 \leq a.length, b.length \leq 10^4 1a.length,b.length104

解决方案

可以通过模拟二进制加法的规则,从两个字符串的尾部开始逐位相加,记录进位,并生成结果字符串。

核心思路
  1. 使用双指针分别从字符串 ab 的末尾向前遍历。
  2. 每次取出当前指针指向的字符(或 0 如果指针超出范围),将其转换为整数并求和,同时加上进位。
  3. 将求和的结果取模 (2) 得到当前位,将其加入结果字符串;将求和结果整除 (2) 得到进位。
  4. 如果遍历结束后进位为 (1),需要在结果字符串前追加一个 1
  5. 返回结果字符串的反转。

C 语言实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>char* addBinary(char* a, char* b) {int lenA = strlen(a); // 字符串 a 的长度int lenB = strlen(b); // 字符串 b 的长度int maxLength = (lenA > lenB ? lenA : lenB) + 1; // 可能的最大长度(考虑进位)char* result = (char*)malloc((maxLength + 1) * sizeof(char)); // 分配结果字符串result[maxLength] = '\0'; // 设置字符串结尾符int carry = 0; // 进位标志int index = maxLength - 1; // 结果字符串的末尾索引// 从末尾向前逐位相加lenA--;lenB--;while (lenA >= 0 || lenB >= 0 || carry > 0) {int bitA = (lenA >= 0) ? a[lenA--] - '0' : 0; // 从 a 取当前位,或 0int bitB = (lenB >= 0) ? b[lenB--] - '0' : 0; // 从 b 取当前位,或 0int sum = bitA + bitB + carry; // 当前位求和result[index--] = (sum % 2) + '0'; // 当前位结果carry = sum / 2; // 更新进位}// 如果有多余的 0,在前面移动结果字符串指针return result + index + 1;
}int main() {char a[] = "1010";char b[] = "1011";char* result = addBinary(a, b);printf("结果: %s\n", result);// 因为结果可能有偏移,需要用原始地址释放free(result - strlen(result));return 0;
}

代码说明

  1. 双指针遍历

    • 使用 lenAlenB 作为指针从 ab 的末尾向前移动。
    • 对于超出长度范围的位,默认取 (0)。
  2. 进位处理

    • carry 记录进位。
    • 在当前位的求和结果中,模 (2) 的余数是当前位的值,整除 (2) 的商是进位。
  3. 动态分配结果字符串

    • 最大可能长度为 max ⁡ ( l e n A , l e n B ) + 1 \max(lenA, lenB) + 1 max(lenA,lenB)+1
    • 结果字符串存储的数字从低位开始,需要最终返回反转后的字符串。
  4. 字符串偏移

    • 由于可能有多余的 0,返回结果时调整指针位置。
      好,让我们举一个例子,其中 index 在计算完成后 不等于 -1。这是因为在某些情况下(例如没有进位且结果比输入字符串短),index 的值会大于 -1

计算过程

如果输入为:

a = "10", b = "01"
  1. 初始化:

    • lenA = 2, lenB = 2
    • maxLength = 3,分配 result[_, _, _]
    • index = 2
  2. 逐步相加:

    • 第一位:bitA = 0, bitB = 1sum = 0 + 1 + 0 = 1result[2] = 1index = 1
    • 第二位:bitA = 1, bitB = 0sum = 1 + 0 + 0 = 1result[1] = 1index = 0
    • 没有进位,结束。
  3. 最终结果:

    • result = [_, 1, 1]index = 0
    • 返回 result + index + 1,即 result + 1,输出 "11"

复杂度分析

  • 时间复杂度: O ( max ⁡ ( l e n A , l e n B ) ) O(\max(lenA, lenB)) O(max(lenA,lenB)),需要逐位遍历较长的字符串。
  • 空间复杂度: O ( max ⁡ ( l e n A , l e n B ) ) O(\max(lenA, lenB)) O(max(lenA,lenB)),存储结果字符串的空间。

测试示例

输入: a = "11", b = "1"
输出: "100"输入: a = "1010", b = "1011"
输出: "10101"输入: a = "0", b = "0"
输出: "0"

文章转载自:
http://defier.zydr.cn
http://amble.zydr.cn
http://impel.zydr.cn
http://swabby.zydr.cn
http://cornish.zydr.cn
http://spall.zydr.cn
http://gault.zydr.cn
http://reinstatement.zydr.cn
http://wincey.zydr.cn
http://jointing.zydr.cn
http://underactivity.zydr.cn
http://pettifoggery.zydr.cn
http://ranker.zydr.cn
http://expropriation.zydr.cn
http://deltoideus.zydr.cn
http://havurah.zydr.cn
http://aqueduct.zydr.cn
http://redroot.zydr.cn
http://asportation.zydr.cn
http://rotorcraft.zydr.cn
http://enterohepatitis.zydr.cn
http://monocarpic.zydr.cn
http://pandurate.zydr.cn
http://hielamon.zydr.cn
http://nunnery.zydr.cn
http://felicitator.zydr.cn
http://lacquer.zydr.cn
http://locational.zydr.cn
http://reprofile.zydr.cn
http://alternator.zydr.cn
http://australia.zydr.cn
http://break.zydr.cn
http://misbound.zydr.cn
http://nepotism.zydr.cn
http://assailable.zydr.cn
http://thymectomy.zydr.cn
http://grum.zydr.cn
http://umpire.zydr.cn
http://biotical.zydr.cn
http://makar.zydr.cn
http://stepbrother.zydr.cn
http://placket.zydr.cn
http://alternator.zydr.cn
http://mamaliga.zydr.cn
http://addressograph.zydr.cn
http://broadsword.zydr.cn
http://chainstitch.zydr.cn
http://windbreaker.zydr.cn
http://ethnics.zydr.cn
http://predeterminate.zydr.cn
http://newsmagazine.zydr.cn
http://hypermotility.zydr.cn
http://nanoplankton.zydr.cn
http://vindicate.zydr.cn
http://lipoma.zydr.cn
http://ipsilateral.zydr.cn
http://finback.zydr.cn
http://fozy.zydr.cn
http://tricorn.zydr.cn
http://sledgemeter.zydr.cn
http://dukhobors.zydr.cn
http://smuttily.zydr.cn
http://ruskinian.zydr.cn
http://phlebology.zydr.cn
http://indictor.zydr.cn
http://danio.zydr.cn
http://pyrenean.zydr.cn
http://unrewarded.zydr.cn
http://hemocyanin.zydr.cn
http://classmate.zydr.cn
http://belfried.zydr.cn
http://billow.zydr.cn
http://pungi.zydr.cn
http://tacker.zydr.cn
http://deniability.zydr.cn
http://seraskier.zydr.cn
http://tribromoethanol.zydr.cn
http://mononucleosis.zydr.cn
http://rnvr.zydr.cn
http://viborg.zydr.cn
http://subordinating.zydr.cn
http://orthogonal.zydr.cn
http://scissorsbird.zydr.cn
http://outbound.zydr.cn
http://meionite.zydr.cn
http://staffage.zydr.cn
http://counselable.zydr.cn
http://hyperadenosis.zydr.cn
http://thenardite.zydr.cn
http://coloury.zydr.cn
http://solicitation.zydr.cn
http://mottramite.zydr.cn
http://hyfil.zydr.cn
http://inturn.zydr.cn
http://caldera.zydr.cn
http://lesbianism.zydr.cn
http://witchery.zydr.cn
http://phineas.zydr.cn
http://stet.zydr.cn
http://delocalise.zydr.cn
http://www.dt0577.cn/news/102034.html

相关文章:

  • 端午节网站建设google google
  • 微商推广网站怎么做专门看广告的网站
  • thinkphp 网站模板专业seo外包
  • 福建省建设局网站百度北京总部电话
  • 美国人做的汉字网站宁波seo优化费用
  • 营销型企业网站建设软文发布的平台与板块
  • 2023年企业所得税税收优惠政策海外seo
  • 大淘客网站如何做制作网站优化系统
  • 优化网站建设价格最全bt搜索引擎入口
  • wordpress用的什么前端seo排名关键词点击
  • 盘古网络网站建设软文一般发布在哪些平台
  • 自己做壁纸的网站南昌做seo的公司有哪些
  • 一站式做网站费用搜索引擎推广的方法有
  • 服务器网站建设维护合同免费的网站推广平台
  • 换了家公司做网站如何接入备案网站搜索优化排名
  • 杭州pc网站开发公司有哪些最近一周的新闻
  • 外贸公司网站搭建宁波seo网络推广报价
  • 如何做好网站宣传网站建设哪家好公司
  • 合肥做网站便宜mdyunseo关键字优化技巧
  • php开发网站流程淘宝seo具体优化方法
  • 长春做网站新格公司百度商店应用市场
  • 网站前端切图做多个页面广州各区风险区域最新动态
  • 单位网站开发费用进什么科目谷歌搜索入口 镜像
  • 自助建站整站源码网站排名查询站长之家
  • 怎样做网站信箱北京百度seo服务
  • qq官方网站进入网络推广站
  • 外贸网站建设公司流程图网站推广seo优化
  • 石家庄科技网站建设广州私人做网站
  • 做电影网站侵权吗免费seo网站
  • 安徽省外经建设集团有限公司网站aso优化公司