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

云库做供应链的网站优化关键词排名外包

云库做供应链的网站,优化关键词排名外包,html个人主页源码,河南最新今天的消息力扣题目链接 题目本身难度不大,但是后续的一些补充内容还是值得搞清楚的 主要的逻辑如下: 其实本题的目的就是让我们来模拟我们的竖式加法。所以很直观的一个想法就是使用双指针:分别指向两个 num 的末尾。随后就会产生一些问题&#xff1a…

力扣题目链接
题目本身难度不大,但是后续的一些补充内容还是值得搞清楚的

主要的逻辑如下:

  1. 其实本题的目的就是让我们来模拟我们的竖式加法。所以很直观的一个想法就是使用双指针:分别指向两个 num 的末尾。
  2. 随后就会产生一些问题:如何在不进行字符串->整数形式来完成计算:
int x = '9' - '0';

这样就可以完成字符串到整数的隐式转换。

  1. 然后第二个问题,如何完成进位:
    这里就需要和我们的竖式加法一样的逻辑,定义一个 add 来表示进位,每次在按位进行加法的时候,我们需要把这个进位也计算进去。并且每次计算我们也需要计算出当前位是否有进位
int add = 0;
int res = x + y + add;
int add = res / 10;
  1. 最后一个问题,如何处理两个数之间位数不同?
    我们从后往前遍历 num 的时候,如果有位数不同,说明某一个指针已经指向了负数,此时我们就在该位置补0,这个想法也是完全按照竖式加法的思路来的。
int x = i >= 0 ? nums1[i] : 0;
int y = j >= 0 ? nums2[j] : 0;

所以总体CPP代码如下:

class Solution {
public:string addStrings(string num1, string num2) {int i = num1.length() - 1, j = num2.length() - 1, add = 0;string ans = "";while (i >= 0 || j >= 0 || add != 0) {int x = i >= 0 ? num1[i] - '0' : 0;int y = j >= 0 ? num2[j] - '0' : 0;int res = x + y + add;add = res / 10;ans.push_back('0' + res % 10);i--;j--;}reverse(ans.begin(), ans.end());return ans;}
};

补充题:字符串相减(大数相减)

来源于:补充题:字符串相减(大数相减)


首先我们要考虑到两个非负整数相减的结果可能为负。

因此,首先比较两个数的大小。

如果小减大,我们可以将两个参数调换一下位置执行减法,在结果前填上负号即可。(结果为 0 时不加负号)

string subString(string num1, string num2) {string res;if (isLess(num1, num2)) {res = sub(num2, num1);if (res != '0') res.insert(0, '-');} else { res = sub(num1, num2); }return res; 
}

我们可以看到我们需要实现两个函数: isLess(int, int)sub(int, int)

isLess(int, int)

其实思路很简单,长度更长的字符串数一定打;当长度一样的就去比较字典序即可:

bool isLess(string a, string b) {if (a.size() == b.size()) return a < b;return a.size() < b.size();
}

sub(int, int)

其实和加法的差别不大,主要就是把 进位改成 借位

string sub(string a, string b) {string res = "";int i = a.size() - 1, j = b.size() - 1, borrow = 0;while (i >= 0 || j >= 0) {int x = i >= 0 ? (a[i] - '0') : 0; //字符转整数int y = j >= 0 ? (b[j] - '0') : 0; //字符转整数int z = (x - borrow - y + 10) % 10;}
}

好了,写到这里我们不得不聊一聊关键写法之一:
z = (x - borrow - y + 10) % 10
这样的写法更加简洁,相当于:

if (x - borrow - y + 10 < 0) {z = (x - borrow - y + 10) % 10
} else z = x - borrow - y;

好了,我们接着写代码

string sub(string a, string b) {string res = "";int i = a.size() - 1, j = b.size() - 1, borrow = 0;while (i >= 0 || j >= 0) {int x = i >= 0 ? (a[i] - '0') : 0; //字符转整数int y = j >= 0 ? (b[j] - '0') : 0; //字符转整数int z = (x - borrow - y + 10) % 10;res.push_back();borrow = x - borrow - y < 0 ? 1 : 0;i--, j--;}reverse(res.begin(), res.end());//删除前导0,注意边界是 res.size() - 1!,防止当res为"0000"时,删为""的清空int pos = 0;for (pos = 0; pos < res.size() - 1; pos++) {if (res[pos] != '0') break;}return res.substr(pos);
}

这里再谈一个重点:删除前导0
例如,当121-120=001,需要将前面的0删除,得到最终结果1。注意121-121=000这种情况,不要把所有0都删了!

http://www.tj-hxxt.cn/news/102736.html

相关文章:

  • 个人艺术作品网站建设策划书搜索引擎推广seo
  • 网站界面设计的要求电子商务网站建设与管理
  • 网站 外包 版权seo网站管理
  • 金昌网站建设营销型网站建设多少钱
  • 微信公众平台注册不了安卓优化软件
  • 一起做网店的类似网站seo专业培训费用
  • 自己做网站步骤 域名免费发布信息网网站
  • 网站做宣传的免费渠道有那种seo搜索引擎实训心得体会
  • wordpress外链图片无法显示适合seo软件
  • 网架提升公司成都网站seo公司
  • 邵阳做网站建设识万物扫一扫
  • 黄冈最专业的公司网站建设平台ui设计培训班哪家好
  • 个人备案网站做淘宝客可以怎么创建自己的网站
  • 在网站上做的图表怎么放到PPT里面如何推广
  • 网站开发与推广就业全球搜索引擎
  • 六盘水网站建设网络营销推广的手段
  • app软件开发课程网络seo推广培训
  • zencart 团购网站网站快速排名上
  • 叫别人做网站需要注意什么整合营销传播的概念
  • 营销型网站建设找哪家北京营销推广公司
  • 河南省建设工程标准定额管理网站网络广告的形式有哪些
  • 东营市建设项目工伤保险是哪个网站短视频运营方案策划书
  • wordpress作品集网站seo优化工具
  • 资阳网站优化互联网营销推广渠道
  • 广西教育平台网站建设网络营销的方法有哪些
  • 哪个网站做的最好排行榜百度
  • ppt设计师兼职seo客服
  • 公司网站建设北京推广点击器
  • 装饰公司营销网站模板百度推广客户端app
  • 在线客服接入网站搜索引擎营销流程是什么?