免费网站商城模板,网站链接跳转怎么做,wordpress 精美主题,wordpress镜像是什么思路#xff1a; 相加时要转换成对应的数字#xff0c;所以让字符数字-0 如‘9’-‘0’#xff08;ASCII#xff09;57-489
9110#xff0c;会进1#xff0c;把进位保存起来#xff0c;只取0头插到新串里。
头插时要转换对应字符数字#xff0c;所以让对应的数字‘…思路 相加时要转换成对应的数字所以让字符数字-0 如‘9’-‘0’ASCII57-489
9110会进1把进位保存起来只取0头插到新串里。
头插时要转换对应字符数字所以让对应的数字‘0’ 如0048 0
之后下标往前走依次取值相加每次都要进位。
实现
class Solution
{
public:string addStrings(string num1, string num2) {int end1num1.size()-1,end2num2.size()-1;int next0;string str;while(end10||end20){int val1 0;int val2 0;if(end10){val1num1[end1--]-0;}if(end20){val2num2[end2--]-0;}int retval1val2next;nextret/10;ret%10;str.insert(0,1,ret0);}return str;}
}; 发现还有用例没通过可以看出是结束时循环走出来了没有进位所以在循环结束后加个判断条件
if(next1)
{str.insert(0,1,1);
}
最后看到用时很长因为头插的时间复杂度是()。
优化 把头插换成尾插
class Solution
{
public:string addStrings(string num1, string num2) {int end1num1.size()-1,end2num2.size()-1;int next0;string str;while(end10||end20){int val1 0;int val2 0;if(end10){val1num1[end1--]-0;}if(end20){val2num2[end2--]-0;}int retval1val2next;nextret/10;ret%10;str.push_back(ret0);}if(next1){str.push_back(1);}reverse(str.begin(),str.end());return str;}
};
时间复杂度n