江西网站建设费用,阿里巴巴怎么建设网站,卖主机网站,株洲企业网站建设工作室. - 力扣#xff08;LeetCode#xff09; -》》》》》题目链接 实现思路#xff1a;计算数字符串长度并用数组的方式计算出字符位置#xff0c;用字符的ask码‘0’计算出字符本身。 class Solution {
public:string addStrings(string num1, string num2) {string str;int…. - 力扣LeetCode -》》》》》题目链接 实现思路计算数字符串长度并用数组的方式计算出字符位置用字符的ask码‘0’计算出字符本身。 class Solution {
public:string addStrings(string num1, string num2) {string str;int end1 num1.size()-1 , end2 num2.size()-1;int next 0;while(end1 0 || end2 0)//开始条件{int a1 end1 0 ? num1[end1--] -0 : 0;int a2 end2 0 ? num2[end2--] -0 : 0;int ret a1 a2 next;next ret / 10; //余数ret ret % 10; //进位数str.insert(0, 1, 0 ret);}if(next 1)str.insert(str.begin() , 1);return str;}
}; 求出字符本身后用string库中自带的insert 表示在下标为0的位置处插入大小为1的字符 并if判断是否到最后有进位 注意时间复杂度为
那应该从那几个方面提高时间复杂度那
在方法一中是都是在下标为零的位置插入每插入一次就会移动一次。--》头插在逆置每几次相加后都会开一份空间 ---》开一次 #define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:string addStrings(string num1, string num2) {string str;str.reserve(max(num1.size(), num2.size()) 1);int end1 num1.size() - 1, end2 num2.size() - 1;int next 0;while (end1 0 || end2 0){int a1 end1 0 ? num1[end1--] - 0 : 0;int a2 end2 0 ? num2[end2--] - 0 : 0;int ret a1 a2 next;next ret / 10;ret ret % 10;// str (0 ret); //尾插str.insert(str.begin(),0ret);//用法一//str.insert(0, 1, 0 ret);//用法二}if (next 1)str 1;/// str.insert(str.begin() , 1);reverse(str.begin(), str.end());//逆置return str;}
}; reserve 迭代器区间 扩容有消耗 reserve 直接一次性开到最大