[leetcode] 复数乘法 基础模拟
Posted PushyTao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode] 复数乘法 基础模拟相关的知识,希望对你有一定的参考价值。
class Solution
public:
string complexNumberMultiply(string num1, string num2)
int shi1 = 0, shi2 = 0;
int xu1 = 0, xu2 = 0;
shi1 = getShi(num1);
shi2 = getShi(num2);
xu1 = getXu(num1);
xu2 = getXu(num2);
string ans = "";
int shi = shi1 * shi2 - xu1 * xu2;
int xu = shi1 * xu2 + xu1 * shi2;
ans += toString(shi) + "+";
ans += toString(xu) + "i";
return ans;
int getShi(string s)
int len = s.size();
int ret = 0;
int fu = 1;
for(int i = 0; i < len; i ++)
if(s[i] == '-')
fu = -1;
continue;
if(s[i] == '+') break;
ret = ret * 10 + s[i] - '0';
return ret * fu;
int getXu(string s)
int ret = 0;
int len = s.size();
int flag = 0;
int fu = 1;
for(int i = 0; i < len; i ++)
if(s[i] == '+') flag = 1;
if(s[i] == '-' && i != 0)
fu = -1;
continue;
if(s[i] == 'i') break;
if(flag && isdigit(s[i]))
ret = ret * 10 + s[i] - '0';
return ret * fu;
string toString(int n)
if(n == 0)
string t = "0";
return t;
string ret = "";
int fu = 0;
if(n < 0) fu = 1, n *= -1;
while(n)
int t = n % 10;
n /= 10;
ret.push_back('0' + t);
reverse(ret.begin(),ret.end());
if(fu == 1)
ret = "-" + ret;
return ret;
;
以上是关于[leetcode] 复数乘法 基础模拟的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 917. 仅仅反转字母 / 1706. 球会落何处 / 537. 复数乘法