当前位置:首页 > 编程笔记 > 正文
已解决

经典题记录 字符串相加/相乘

来自网友在路上 147847提问 提问时间:2023-09-24 10:06:07阅读次数: 47

最佳答案 问答题库478位专家为你答疑解惑

1. LeetCode 415 字符串相加

在这里插入图片描述

代码一:代码简短,但需要借助额外的一个string来保存结果,更占用内存。

class Solution {
public:string addStrings(string num1, string num2) {string ans="";int size1=num1.size();int size2=num2.size();int size=max(size1,size2);int flag=0;  //表示进位for(int i=size1-1,j=size2-1;i>=0||j>=0||flag>0;i--,j--){int x=i<0?0:num1[i]-'0';int y=j<0?0:num2[j]-'0';flag=flag+x+y;char ch=(flag%10)+'0';ans=ch+ans;flag=flag/10;}return ans;}
};

在这里插入图片描述

代码二:相比代码一行数多点,但是运行时间短一点,内存占用更少。

string add(string str1,string str2){ //字符串相加int size1 = str1.size();int size2 = str2.size();if(size1>size2){for (int i = 0; i < size1 - size2;i++)str2 = "0" + str2;}if(size2>size1){for (int i = 0; i < size2 - size1;i++)str1 = "0" + str1;}int flag = 0;int size = max(size1, size2);for (int i = size - 1; i >= 0;i--){flag = flag + (str1[i] - '0') + (str2[i] - '0');str1[i] = (flag % 10)+'0';flag /= 10;}if(flag){char x = flag + '0';str1 = x + str1;}return str1;
}

在这里插入图片描述

LeetCode 43 字符串相乘

在这里插入图片描述

代码:在这里插入图片描述

class Solution {
public:string add(string str1,string str2){ //数字字符串相加string str="";int flag=0;for(int i=str1.size()-1,j=str2.size()-1;i>=0||j>=0;i--,j--){int x =i<0?0:str1[i]-'0'; //i等于0表示最高位了,i<0时前面没有数字了int y =j<0?0:str2[j]-'0'; //j等于0表示最高位了,j<0时前面没有数字了flag+=x+y; //当前位的和char ch=flag%10+'0';flag/=10;str=ch+str;}if(flag){char x = flag + '0';str = x + str;}return str;}string multiply(string num1, string num2) { //数字字符串相乘if(num1=="0"||num2=="0")return "0";string ans=""; for(int i=num2.size()-1;i>=0;i--){char ch=num2[i];string tmp="";int flag=0;for(int j=num1.size()-1;j>=0;j--){int x=num1[j]-'0';int y=ch-'0';int n=x*y+flag;flag=n/10;//进位char a=n%10+'0';tmp=a+tmp;}if(flag){char x=flag+'0';tmp=x+tmp;}for(int k=0;k<num2.size()-1-i;k++) //后面补零tmp+="0";ans=add(ans,tmp);}return ans;}
};
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"经典题记录 字符串相加/相乘":http://eshow365.cn/6-12702-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!