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