刷了150多道题,再来一发总结。再LeetCode中有一类题目,要求直接使用数字字符串进行运算,这类题目掌握技巧之后不容易出错,也比较简单,那么这篇博客将对这类题目进行总结,希望有所帮助。

小总结

这类题目需要注意两点:一点是进位检查,尤其是整个循环结束后,额外进行的进位检查,二是按位使用小整数运算,来直接操作字符串。

如果还有什么要注意的,就是某些情况下,在乘法时会出现开头为 ‘0’ 的数字字符串,这个时候增加一道过滤就可以了。

字符串加法

可以反序从最开始逐个相加,最后将结果反序,也可以直接从最末尾反向遍历进行操作。使用除法和取余操作来获取局部操作的结果。

字符串乘法

按照小学学的连乘法进行,这里需要注意一些技巧,如最后给出的代码中所指示的,可以一开始进行反序操作。

字符串乘法给了两份代码,第一份非常推荐,一开始就是直接产生N1+N2长度的字符串,在最后抹去最前面多余的0,这样操作效率很高。在按照连乘法进行连续的乘法加法,可以看走将一个 string x string 转化成了 char x char ,两个个位数乘法。分两层循环,在乘法过程中,每次乘法最多改变两位结果,高位采取进位模式保留。

代码

代码中有乘法和加法的操作。第一份代码为乘法,第二份代码其中调用了单独的加法子函数。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注