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

公众号开发 网站建设上海知名网站建设公司

公众号开发 网站建设,上海知名网站建设公司,宠物美容网站建设合同书,做venn图网站目录 ⼆进制求和(easy) 题目解析 讲解算法原理 编写代码 字符串相乘(medium) 题目解析 讲解算法原理 编写代码 ⼆进制求和(easy) 题目解析 1.题目链接:. - 力扣(LeetCode&a…

目录

⼆进制求和(easy)

题目解析

讲解算法原理

编写代码

字符串相乘(medium)

题目解析

讲解算法原理

编写代码


⼆进制求和(easy)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给你两个⼆进制字符串 a 和 b ,以⼆进制字符串的形式返回它们的和。
⽰例 1:
输⼊:a = "11", b = "1"
输出:"100"
⽰例 2:
输⼊:a = "1010", b = "1011"
输出:"10101"

讲解算法原理

解法(模拟⼗进制的⼤数相加的过程):
算法思路:

模拟⼗进制中我们列竖式计算两个数之和的过程。但是这⾥是⼆进制的求和,我们不是逢⼗进⼀,⽽是逢⼆进⼀。

编写代码

c++算法代码:

class Solution
{
public:string addBinary(string a, string b) {string ret;int cur1 = a.size() - 1, cur2 = b.size() - 1, t = 0;while(cur1 >= 0 || cur2 >= 0 || t){if(cur1 >= 0) t += a[cur1--] - '0';if(cur2 >= 0) t += b[cur2--] - '0';ret += t % 2 + '0';t /= 2;}reverse(ret.begin(), ret.end());return ret;}
};

java算法代码:

class Solution
{public String addBinary(String a, String b) {StringBuffer ret = new StringBuffer();int cur1 = a.length() - 1, cur2 = b.length() - 1, t = 0;while(cur1 >= 0 || cur2 >= 0 || t != 0){if(cur1 >= 0) t += a.charAt(cur1--) - '0';if(cur2 >= 0) t += b.charAt(cur2--) - '0';ret.append((char)('0' + (char)(t % 2)));t /= 2;}ret.reverse();return ret.toString();}
}

字符串相乘(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给定两个以字符串形式表⽰的⾮负整数num1和num2,返回num1和num2的乘积,它们的乘积也表⽰为字符串形式。
注意:不能使⽤任何内置的BigInteger库或直接将输⼊转换为整数。⽰例1:
输⼊:num1="2",num2="3"
输出:"6"
⽰例2:
输⼊:num1="123",num2="456"
输出:"56088"

讲解算法原理

解法(⽆进位相乘然后相加,最后处理进位):
算法思路:

整体思路就是模拟我们⼩学列竖式计算两个数相乘的过程。但是为了我们书写代码的⽅便性,我们选择⼀种优化版本的,就是在计算两数相乘的时候,先不考虑进位,等到所有结果计算完毕之后,再去考虑进位。如下图:

 

编写代码

C++算法代码:

class Solution
{
public:string multiply(string n1, string n2) {// 解法:⽆进位相乘后相加,然后处理进位int m = n1.size(), n = n2.size();reverse(n1.begin(), n1.end());reverse(n2.begin(), n2.end());vector<int> tmp(m + n - 1);// 1. ⽆进位相乘后相加for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)tmp[i + j] += (n1[i] - '0') * (n2[j] - '0');// 2. 处理进位int cur = 0, t = 0;string ret;while(cur < m + n - 1 || t){if(cur < m + n - 1) t += tmp[cur++];ret += t % 10 + '0';t /= 10;}// 3. 处理前导零while(ret.size() > 1 && ret.back() == '0') ret.pop_back();reverse(ret.begin(), ret.end());return ret;}
};

java算法代码:

class Solution
{public String multiply(String num1, String num2) {int m = num1.length(), n = num2.length();char[] n1 = new StringBuffer(num1).reverse().toString().toCharArray();char[] n2 = new StringBuffer(num2).reverse().toString().toCharArray();int[] tmp = new int[m + n - 1];// 1. ⽆进位相乘后相加for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)tmp[i + j] += (n1[i] - '0') * (n2[j] - '0');// 2. 处理进位int cur = 0, t = 0;StringBuffer ret = new StringBuffer();while(cur < m + n - 1 || t != 0){if(cur < m + n - 1) t += tmp[cur++];ret.append((char)(t % 10 + '0'));t /= 10;}// 3. 处理进位while(ret.length() > 1 && ret.charAt(ret.length() - 1) == '0') ret.deleteCharAt((ret.length() - 1));return ret.reverse().toString();}
}

http://www.yayakq.cn/news/599089/

相关文章:

  • 网站打开一片空白海沧区建设局网站
  • 无为县住房和城乡建设局网站网站空间购买价格
  • 青岛做网站的费用wordpress 定时发布插件
  • 自己做网站选什么好广西模板厂有哪些厂家
  • 如何建设 linux 网站网页微博超话签到
  • 做网站需要服务器和什么软件装饰设计工程有限公司经营范围
  • 温州建设局网站首页dede做双语网站
  • 手机网站域名注册网络热词2021
  • 建设公司网站需要注意哪些基于jsp的社团组织网站建设
  • 注册qq空间网站wordpress4.3
  • 网站设计风格及色彩搭配技巧 -哪个网站建设最好
  • 建设领域行政处罚查询网站企业手机网站设计
  • 门户网站 营销建设校园门户网站理由
  • 电子商务网站建设有哪些知识点表白网站建设源码
  • 网站建设公司加优化南京建网站公司
  • 做设计素材在哪个网站花都网站建设
  • 怎么在国外网站买东西美团网站开发目标
  • 广东省一流高职院校建设专题网站品牌建站
  • 外贸营销型网站建设百度域名收录
  • asp网站用什么软件网站模板是什么
  • 轻量云做网站怎么样金泉网推广怎么样
  • 网站建设在马来西亚建企业网站行业网
  • 做公司网站需不需要注册百度关键词搜索排名多少钱
  • 免费建立小程序网站家具网站的建设
  • 库尔勒做网站小程序进入公众号
  • 济南建设网站平台天津黑曼巴网站建设
  • 纪实摄影网站推荐免费招聘人才网
  • seo教学网站小程序seo推广技巧
  • 网站建设vipjiuselu广州网页模板建站
  • 2017wordpress整站源码wordpress文章加载慢6