复数fft的时间复杂度_LeetCode 力扣官方题解 | 537. 复数乘法

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 21:51   2563   0

7f6389dce317b01877214ec500bdaee9.png

力扣 537. 复数乘法(点击查看题目

力扣leetcode-cn.com

题目描述

给定两个表示复数的字符串。

返回表示它们乘积的字符串。注意,根据定义

示例 1:

输入: "1+1i", "1+1i"
输出: "0+2i"
解释: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式

示例 2:

输入: "1+-1i", "1+-1i"
输出: "0+-2i"
解释: (1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。 

注意:

  1. 输入字符串不包含额外的空格。
  2. 输入字符串将以 a+bi 的形式给出,其中整数 ab 的范围均在 [-100, 100] 之间。输出也应当符合这种形式

解决方案

方法:简单解法

算法

两个复数的乘法可以依下述方法完成:

我们简单地根据 '+' 和 'i' 符号分割给定的复杂字符串的实部和虚部。我们把

两个字符串的实部分别存储为
,虚部分别用
存储。

然后,将提取的部分转换为整数后,根据需要将实部和虚部相乘。然后,我们再次以所需的格式形成返回字符串,并返回结果。

Java 实现

public class Solution {

    public String complexNumberMultiply(String a, String b) {
        String x[] = a.split("+|i");
        String y[] = b.split("+|i");
        int a_real = Integer.parseInt(x[0]);
        int a_img = Integer.parseInt(x[1]);
        int b_real = Integer.parseInt(y[0]);
        int b_img = Integer.parseInt(y[1]);
        return (a_real * b_real - a_img * b_img) + "+" + (a_real * b_img + a_img * b_real) + "i";

    }
}

复杂度分析

  • 时间复杂度:
    ,分割需要常量时间,因为字符串的长度非常小(< 20)。
  • 空间复杂度:
    ,使用常量的额外空间。

本文作者:力扣

声明:本文归“力扣”版权所有,如需转载请联系。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP