美文网首页
Leetcode537. 复数乘法

Leetcode537. 复数乘法

作者: LonnieQ | 来源:发表于2019-11-15 21:18 被阅读0次

    题目

    给定两个表示复数的字符串。

    返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。

    示例 1:

    输入: "1+1i", "1+1i"
    输出: "0+2i"
    解释: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。
    

    示例 2:

    输入: "1+-1i", "1+-1i"
    输出: "0+-2i"
    解释: (1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。
    

    注意:

    输入字符串不包含额外的空格。
    输入字符串将以 a+bi 的形式给出,其中整数 a 和 b 的范围均在 [-100, 100] 之间。输出也应当符合这种形式。

    思路

    新建一个复数类,使其支持和字符串相互转换和乘法运算。

    C++解法

    struct Complex {
        int real = 0;
        int imaginary = 0;
        Complex(string str = "") {
            int number = 0;
            int sign = 1;
            for (auto c: str) {
                if (c == '+') {
                    real = sign * number;
                    number = 0;
                    sign = 1;
                } else if (c >= '0' && c <= '9') {
                    number = number * 10 + c - '0';
                } else if (c == '-') {
                    sign = -1;
                }
            }
            imaginary = sign * number;
        }
        Complex multipliedBy(Complex value) {
            Complex newValue;
            newValue.real = real * value.real - imaginary * value.imaginary;
            newValue.imaginary = real * value.imaginary + imaginary * value.real;
            return newValue;
        }
        string description() {
            string value;
            value.append(to_string(real));
            value.append("+");
            value.append(to_string(imaginary));
            value.append("i");
            return value;
        }
    };
    class Solution {
    public:
        
        string complexNumberMultiply(string a, string b) {
            Complex lhs(a), rhs(b);
            return lhs.multipliedBy(rhs).description();
        }
    };
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/complex-number-multiplication

    相关文章

      网友评论

          本文标题:Leetcode537. 复数乘法

          本文链接:https://www.haomeiwen.com/subject/wzfeictx.html