[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. 复数乘法

537 Complex Number Multiplication 复数乘法

复数基础知识

矩阵论基础

1051. 复数乘法 (15)

1051. 复数乘法 (15)