20220.25每日一题:力扣537.复数乘法

题目

复数 可以用字符串表示,遵循 “实部+虚部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 分钟前
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值