LeetCode-537 复数乘法

简介: LeetCode-537 复数乘法

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/complex-number-multiplication

题目描述

复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:

实部 是一个整数,取值范围是 [-100, 100]

虚部 也是一个整数,取值范围是 [-100, 100]

i2 == -1

给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。

 

示例 1:
输入:num1 = "1+1i", num2 = "1+1i"
输出:"0+2i"
解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。
示例 2:
输入:num1 = "1+-1i", num2 = "1+-1i"
输出:"0+-2i"
解释:(1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。
提示:
num1 和 num2 都是有效的复数表示。

解题思路

一道简单的水题,一觉醒来乌克兰要没了。

根据+ 和i 做分界符将字符串转换成整形,然后根据复数相乘的规则算出结果拼装字符串。

代码展示

 

class Solution {
public:
    string complexNumberMultiply(string num1, string num2) {
        string strRet;
        int iNum[4];
        for(int i = 0; i < 2; i++)
        {
            int iTemp = 0;                
            string strTemp;
            for(auto c: i ? num2: num1)
            {
                if(c == '+' || c == 'i')
                {
                    iNum[iTemp + i * 2] = atoi(strTemp.c_str());
                    iTemp++;
                    strTemp.clear();
                }
                else
                {
                    strTemp.push_back(c);
                }
            }
        }
        strRet = to_string(iNum[0] * iNum[2] - iNum[1] * iNum[3]) +"+" + to_string(iNum[0] * iNum[3] + iNum[1] * iNum[2]) + "i";
        return  strRet;
    }
};

运行结果

 

相关文章
|
1月前
复数相加
复数相加。
40 5
|
6月前
537. 复数乘法
537. 复数乘法
|
5月前
|
Python
首先,我们可以从基本的数学运算开始,比如加法、减法、乘法、除法等。
首先,我们可以从基本的数学运算开始,比如加法、减法、乘法、除法等。
|
6月前
|
BI
1051 复数乘法 (15 分)
1051 复数乘法 (15 分)
|
7月前
leetcode-537:复数乘法
leetcode-537:复数乘法
35 0
|
7月前
|
C++
C++系列-第1章顺序结构-6-加法、减法和乘法
C++系列-第1章顺序结构-6-加法、减法和乘法
|
7月前
|
存储 C++
[C++/PTA] 矩阵的乘法运算
[C++/PTA] 矩阵的乘法运算
153 0
剑指offer 73. 不用加减乘除做加法
剑指offer 73. 不用加减乘除做加法
66 0
复数四则运算
复数四则运算
122 0