537 复数乘法(中等

简介:

image-20221030160706881

解题思路:用加号作为分隔符,然后取出前后的所有数使用复数运算法则进行计算即可。题解如下,官方代码更简洁。

#
# @lc app=leetcode.cn id=537 lang=python3
#
# [537] 复数乘法
#

# @lc code=start
from re import I


class Solution:
    def complexNumberMultiply(self, num1: str, num2: str) -> str:
        #我的代码
        # num1 = num1.split('+')
        # num2 = num2.split('+')
        # a1, a2 = int(num1[0]), int(num2[0])
        # b1, b2 = int(num1[1][:(len(num1[1])-1)]
        #              ), int(num2[1][:(len(num2[1])-1)])
        # a = a1*a2-b1*b2
        # b = a1*b2+a2*b1
        # return str(a)+'+'+str(b)+'i'
        # leetcode官方题解
        real1, img1 = map(int, num1[:-1].split('+'))
        real2, img2 = map(int, num2[:-1].split('+'))
        return f'{real1*real2-img1*img2}+{real1*img2+img1*real2}i'

# @lc code=end

#学习python代码中map函数的用法
//官方C++代码,使用正则表达式
class Solution {
public:
    string complexNumberMultiply(string num1, string num2) {
        regex re("\\+|i"); 
        vector<string> complex1(sregex_token_iterator(num1.begin(), num1.end(), re, -1), std::sregex_token_iterator());
        vector<string> complex2(sregex_token_iterator(num2.begin(), num2.end(), re, -1), std::sregex_token_iterator());
        int real1 = stoi(complex1[0]);
        int imag1 = stoi(complex1[1]);
        int real2 = stoi(complex2[0]);
        int imag2 = stoi(complex2[1]);
        return to_string(real1 * real2 - imag1 * imag2) + "+" + to_string(real1 * imag2 + imag1 * real2) + "i";
    }
};

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/complex-number-multiplication/solution/fu-shu-cheng-fa-by-leetcode-solution-163i/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
C语言
C语言之根据公式计算圆周率的近似值
C语言之根据公式计算圆周率的近似值
307 0
|
2月前
复数相加
复数相加。
50 5
|
7月前
537. 复数乘法
537. 复数乘法
|
7月前
|
机器学习/深度学习 算法 Serverless
利用无穷级数逼近计算幂运算与开根号——Python实现
使用泰勒级数逼近法,本文介绍了如何用Python计算特殊幂运算,包括分数次幂和开根号。通过定义辅助函数,如`exp`、`getN_minus_n`、`multi`和`getnum`,实现了计算任意实数次幂的功能。实验结果显示,算法能有效计算不同情况下的幂运算,例如`0.09^2`、`1^2`、`0.25^2`、`0.09^(0.5)`、`1^(0.5)`和`0.25^(0.5)`。虽然精度可能有限,但可通过调整迭代次数平衡精度与计算速度。
|
7月前
|
BI
1051 复数乘法 (15 分)
1051 复数乘法 (15 分)
|
8月前
leetcode-537:复数乘法
leetcode-537:复数乘法
40 0
|
C++
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
140 0