来源:力扣(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. seajs封装js方法
  2. [转] Making GTFS query more convenient
  3. 0x和H都表示十六进制有什么区别吗?
  4. ubuntun安装ssh,并远程链接服务器操作
  5. BZOI 1507 [NOI2003] Editor
  6. UILable &#160;/ &#160;UITextField &#160;/ &#160; UIButton
  7. C++按值和按址传递对象的思考和优化
  8. 基于visual Studio2013解决算法导论之010快排中应用插入排序
  9. Learning How to Learn, Part 1
  10. Oracle的基本学习(一)&mdash;安装Oracle
  11. Firefox插件推荐
  12. 201521123014 《Java程序设计》第7周学习总结
  13. 201521123113 《Java程序设计》第2周学习总结
  14. Deloyment Descriptor web.xml
  15. 基于zookeeper的高可用Hadoop HA集群安装
  16. 【转载】 PyTorch学习之六个学习率调整策略
  17. NODE-WEBKIT教程(5)NATIVE UI API 之FRAMELESS WINDOW
  18. python內建模块之datetime
  19. 【转】UTF16和UTF8什么区别?
  20. C#对两种类型动态库的使用

热门文章

  1. 我今天吃了SHI,请对下联
  2. JAVA中的注解可以继承吗?
  3. SQLMap入门——获取当前网站数据库的用户名称
  4. .Net 6 使用 Consul 实现服务注册与发现 看这篇就够了
  5. python之路39 前端开始 各种标签
  6. 如何在mac电脑上配置命令行工具
  7. NET-SynchronizationContext
  8. Java基础学习笔记-关键字、标识符、分隔符
  9. MySQL 合并查询union 查询出的行合并到一个表中
  10. 报错One record is expected, but the query result is multiple records