题目
复数 可以用字符串表示,遵循 “实部+虚部i” 的形式,并满足下述条件:
实部 是一个整数,取值范围是 [-100, 100]
虚部 也是一个整数,取值范围是 [-100, 100]
i2 == -1
给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。
示例
输入:num1 = "1+1i", num2 = "1+1i"
输出:"0+2i"
解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。
输入:num1 = "1+-1i", num2 = "1+-1i"
输出:"0+-2i"
解释:(1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。
解法
这题是纯纯的模拟题,因此考虑对主要任务就行分解实现。该题输入是String类型,且题目输入必须是"a+bi"的形式,因此主要任务氛围两步:一,根据规则提取复数的虚部与实部;二,根据虚部与实部的实际值进行对应输出复数的实部和虚部数值运算,并拼接成字符串值返回。
具体实现代码如下:
class Solution {
public String complexNumberMultiply(String num1, String num2) {
int[] number1 = transforString(num1);
int[] number2 = transforString(num2);
StringBuffer sb = new StringBuffer();
//模拟复数运算逻辑并拼接返回
int shibu = (number1[0] * number2[0]) - (number1[1] * number2[1]);
int xubu = (number1[0] * number2[1]) + (number1[1] * number2[0]);
sb.append(shibu).append("+").append(xubu).append("i");
return sb.toString();
}
//这里实现任务一,取输入的数值的实部与虚部
public int[] transforString(String num){
int[] nums = new int[2];
String[] list = num.split("\\+");
nums[0] = Integer.parseInt(list[0]);
nums[1] = Integer.parseInt(list[1].substring(0,list[1].length()-1));
return nums;
}
}
其执行效果如下
55 / 55 个通过测试用例
状态:通过
执行用时: 1 ms
内存消耗: 39.5 MB
提交时间:14 分钟前