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

建设农产品网站总结ppt哪里能找到网站

建设农产品网站总结ppt,哪里能找到网站,汉中专业网站建设公司,济南知名网站建设平台二进制求和 给你两个二进制字符串 a 和 b #xff0c;以二进制字符串的形式返回它们的和。 https://leetcode.cn/problems/add-binary/description/ 代码一#xff0c;尝试使用笨办法#xff0c;会造成溢出 class Solution { public:string addBinary(string a, string …二进制求和 给你两个二进制字符串 a 和 b 以二进制字符串的形式返回它们的和。 https://leetcode.cn/problems/add-binary/description/ 代码一尝试使用笨办法会造成溢出 class Solution { public:string addBinary(string a, string b) {int len1 a.length();int len2 b.length();long long A0;long long B0;for(int ilen1-1;i0;i--){A (a[i] - 0) *pow(2,len1-1-i);}for(int jlen2-1;j0;j--){B (b[j] - 0)*pow(2,len2-1-j);}long long CAB;if(C0){string c0;return c;}string c;while(C!0){int m C%2; c(m0);CC/2;}string reversed_c(c.rbegin(), c.rend());return reversed_c;} };注意对于字符串的反转可以使用 string reversed_c(c.rbegin(), c.rend());按照这个思路先对于ab字符串反转然后按位相加最后考虑进位问题这个思路还是有点问题 看到一个大佬的题解 class Solution { public:string addBinary(string a, string b) {if (b.size() a.size()) {return addBinary(b, a); // 这里先确保第一个数不短于第二个数}int m a.size(), n b.size(), carry 0;for (int i 0; i m; i) {if (n - 1 - i 0) {if (carry 0) break;} else {carry b[n - 1 - i] - 0;}carry a[m - 1 - i] - 0;a[m - 1 - i] 0 (carry % 2);carry 1;}return carry ? 1 a : a;} };函数分析 首先进行长度比较如果b的长度大于a的长度就交换两个参数的位置确保第一个参数这里是a不短于第二个参数。这样做是为了在后续的循环中简化处理因为在处理时是以较长的字符串为基准进行遍历。然后确定两个字符串的长度m和n以及进位carry初始值为 0。接着进入循环循环从长字符串a的最后一个字符开始向前遍历。 如果当前索引对应的位置超出了短字符串b的范围即n - 1 - i 0此时如果进位carry为 0则说明没有更多的进位需要处理可以直接跳出循环。如果当前索引对应的位置在短字符串b的范围内则将短字符串b对应位置的字符值转换为数字通过减去字符’0’累加到进位carry中。同时将长字符串a对应位置的字符值也转换为数字累加到进位carry中。然后更新长字符串a对应位置的字符为当前进位和的结果对 2 取余后再加上字符’0’即得到该位置的新二进制值。最后更新进位carry为其当前值右移一位相当于除以 2以准备下一位的计算。 循环结束后如果进位carry不为 0则在结果字符串a的前面添加一个字符’1’表示最高位有进位否则直接返回a作为最终的结果字符串。 下面是一种常规思路上面的思路看不懂可以看下面这个 class Solution { public:string addBinary(string a, string b) {int al a.size();int bl b.size();while(al bl) //让两个字符串等长若不等长在短的字符串前补零否则之后的操作会超出索引{a 0 a; al;}while(al bl){b 0 b; bl;}for(int j a.size() - 1; j 0; -- j) //从后到前遍历所有的位数同位相加{a[j] a[j] - 0 b[j];if(a[j] 2) //若大于等于字符‘2’需要进一{a[j] (a[j] - 0) % 2 0;a[j-1] a[j-1] 1;}}a[0] a[0] - 0 b[0]; //将ab的第0位相加if(a[0] 2) //若大于等于2需要进一{a[0] (a[0] - 0) % 2 0;a 1 a;}return a;} };
http://www.hkea.cn/news/14301672/

相关文章:

  • 如何盗用网站模板问答网站怎么做营销
  • 网站首页外链在哪里可以自己建网站
  • 手机网站 cms网站规划与栏目结构诊断
  • 鄂州网站推广优化技巧网页制作官网
  • 找人做网站安全吗wordpress 页面不存在
  • 苏州企业网站建设专家杭州企业网站设计模板
  • 莆田做网站公司电话上海包装设计公司
  • 西宁网站优化交互做的好网站
  • 烟台网站建设哪家专业上海关键词优化公司哪家好
  • 现在有什么网站做设计或编程兼职深圳四站合一网站建设电话
  • 如何优化好一个网站如何做网络销售
  • 163网站是jsp做的吗接广告的平台推荐
  • 山西建设厅网站2016年3号商品网站建设实验报告
  • wordpress快速仿站视频教程wordpress my-account
  • 西安优惠电商平台网站自己做网站用软件下载
  • 建站行业分析wordpress域名改了
  • 怎么做监控直播网站建设银行租房网站6
  • 南昌网站搭建公司 赣ICP青岛个人接网站建设
  • 济南网站建设代理python做网站比php好
  • 建个大型网站要多少钱潍坊做网站张家口
  • 北京百度网站排名优化温州企业网站建设
  • 医院导航网站怎么做网站建设项目怎么写
  • 如何给网站划分栏目企业展厅设计要点
  • 外国网站的浏览器在线视频下载网站如何做
  • 网站调整方案wordpress主题位置
  • 原创手做网站平台企业是什么意思
  • cms网站访问人数爱站权重是怎么计算的
  • 如何免费开自己的网站装饰公司门头
  • 怎样拿电脑做网站网站 月15g流量够用吗
  • 做购物网站需要什么资质节能 建材 工程标准