标签:string num2 num1 LeetCode 537 复数 iNum 2i 乘法
来源:力扣(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; } };
运行结果
标签:string,num2,num1,LeetCode,537,复数,iNum,2i,乘法 来源: https://www.cnblogs.com/zhangshihang/p/15934447.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。