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;
    }
};

 

运行结果

LeetCode-537 复数乘法

 

 

上一篇:leetcode练习记录-字符串


下一篇:hadoop入门(8):hdfs的java编程-配置