← Static tasks

537. Complex Number Multiplication

leetcode medium

#csharp#leetcode#medium#string

Task

Комплексное число можно представить в виде строки в формате "real+imaginaryi", где:

real — это действительная часть и является целым числом в диапазоне [-100, 100].

imaginary — это мнимая часть и является целым числом в диапазоне [-100, 100].

i^2 == -1.

Даны два комплексных числа num1 и num2 в виде строк, верните строку комплексного числа, представляющую их произведение.

Пример:

Input: num1 = "1+1i", num2 = "1+1i"

Output: "0+2i"

Explanation: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i, and you need convert it to the form of 0+2i.

C# solution

matched/original
public class Solution {
    public string ComplexNumberMultiply(string a, string b) {
        var x = a.Split(new char[] { '+', 'i' });
        var y = b.Split(new char[] { '+', 'i' });
        int a_real = int.Parse(x[0]);
        int a_img = int.Parse(x[1]);
        int b_real = int.Parse(y[0]);
        int b_img = int.Parse(y[1]);
        int realPart = a_real * b_real - a_img * b_img;
        int imaginaryPart = a_real * b_img + a_img * b_real;
        return realPart + "+" + imaginaryPart + "i";
    }
}

C++ solution

auto-draft, review before submit
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public string ComplexNumberMultiply(string a, string b) {
        var x = a.Split(new char[] { '+', 'i' });
        var y = b.Split(new char[] { '+', 'i' });
        int a_real = int.Parse(x[0]);
        int a_img = int.Parse(x[1]);
        int b_real = int.Parse(y[0]);
        int b_img = int.Parse(y[1]);
        int realPart = a_real * b_real - a_img * b_img;
        int imaginaryPart = a_real * b_img + a_img * b_real;
        return realPart + "+" + imaginaryPart + "i";
    }
}

Java solution

matched/original
public class Solution {

    public String complexNumberMultiply(String a, String b) {
        String x[] = a.split("\\+|i");
        String y[] = b.split("\\+|i");
        int a_real = Integer.parseInt(x[0]);
        int a_img = Integer.parseInt(x[1]);
        int b_real = Integer.parseInt(y[0]);
        int b_img = Integer.parseInt(y[1]);
        return (a_real * b_real - a_img * b_img) + "+" + (a_real * b_img + a_img * b_real) + "i";

    }
}

JavaScript solution

matched/original
var complexNumberMultiply = function(a, b) {
    const x = a.split('+');
    const y = b.split('+');
    const a_real = parseInt(x[0]);
    const a_img = parseInt(x[1].slice(0, -1));
    const b_real = parseInt(y[0]);
    const b_img = parseInt(y[1].slice(0, -1));
    const realPart = a_real * b_real - a_img * b_img;
    const imaginaryPart = a_real * b_img + a_img * b_real;
    return realPart + "+" + imaginaryPart + "i";
};

Python solution

matched/original
class Solution:
    def complexNumberMultiply(self, a: str, b: str) -> str:
        x = a.split('+')
        y = b.split('+')
        a_real = int(x[0])
        a_img = int(x[1][:-1])
        b_real = int(y[0])
        b_img = int(y[1][:-1])
        real_part = a_real * b_real - a_img * b_img
        imaginary_part = a_real * b_img + a_img * b_real
        return f"{real_part}+{imaginary_part}i"

Go solution

matched/original
import (
    "fmt"
    "strconv"
    "strings"
)

func complexNumberMultiply(a string, b string) string {
    x := strings.Split(a, "+")
    y := strings.Split(b, "+")
    a_real, _ := strconv.Atoi(x[0])
    a_img, _ := strconv.Atoi(x[1][:len(x[1])-1])
    b_real, _ := strconv.Atoi(y[0])
    b_img, _ := strconv.Atoi(y[1][:len(y[1])-1])
    realPart := a_real * b_real - a_img * b_img
    imaginaryPart := a_real * b_img + a_img * b_real
    return fmt.Sprintf("%d+%di", realPart, imaginaryPart)
}

Explanation

Algorithm

Извлечение реальной и мнимой частей:

Разделите строки a и b на реальные и мнимые части, используя символы '+' и 'i'.

Вычисление произведения:

Переведите извлечённые части в целые числа.

Используйте формулу для умножения комплексных чисел: (a+ib)×(x+iy)=ax−by+i(bx+ay).

Формирование строки результата:

Создайте строку в требуемом формате с реальной и мнимой частями произведения и верните её.

😎