美文网首页
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. 复数乘法

    题目 给定两个表示复数的字符串。 返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。 示例 1: 示例 ...

  • 神奇的乘法(二)

    乘法的种类已经多到计数困难了。 第六种乘法 难产的乘法:复数的乘法 因为复数出生的时候,难产,所以,这种乘法难产。...

  • 复数乘法

    题目: 给定两个表示复数的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。 示例: 输入: "...

  • 1051 复数乘法

    复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i^2=−1;也可以写...

  • 1051 复数乘法 (15 分)

  • 1051 复数乘法 (15 分)

    复数可以写成的常规形式,其中是实部,是虚部,是虚数单位,满足 ;也可以写成极坐标下的指数形式,其中是复数模,是辐角...

  • LeetCode-537复数乘法

    给定两个表示的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。示例 1: 输入: "1+1i"...

  • 537. 复数乘法(Python)

    题目 难度:★★☆☆☆类型:字符串方法:无 力扣链接请移步本题传送门[https://leetcode-cn.co...

  • 复数乘法

    给定两个表示复数的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。 示例 1:输入: "1+1...

  • PAT 1051 复数乘法 (15 分)

网友评论

      本文标题:Leetcode537. 复数乘法

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