LC537复数乘法:「 数学」&「 模拟」

前言

  • 大家好,我是新人简书博主:「 个人主页」主要分享程序员生活、编程技术、* * 以及每日的LeetCode刷题记录,欢迎大家关注我,一起学习交流,谢谢!

  • 正在坚持每日更新LeetCode每日一题,发布的题解有些会参考其他大佬的思路(参考资料的链接会放在最下面),欢迎大家关注我 ~ ~ ~

  • 同时也在进行其他专项类型题目的刷题与题解活动,相关资料也会同步到「GitHub」上面 ~

  • 今天是坚持写题解的34天(haha,从21年圣诞节开始的),大家一起加油


  • 每日一题:LeetCode:537.复数乘法

    • 时间:2022-02-25

    • 力扣难度:Medium

    • 个人难度:Easy

    • 数据结构:字符串

    • 算法:模拟、数学


2022-02-25:LeetCode:537.复数乘法

1. 题目描述

  • 题目:原题链接

    • 复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:

      • 实部 是一个整数,取值范围是 [-100, 100]

      • 虚部 也是一个整数,取值范围是 [-100, 100]

    • 给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。

  • 输入输出规范

    • 输入:两个复数字符串

    • 输出:复数的乘积字符串

  • 输入输出示例

    • 输入:num1 = "1+-1i", num2 = "1+-1i"

    • 输出:"0+-2i"


2. 方法一:模拟

  • 思路

    • 简单模拟题,根据复数乘法的数学规则运算即可

    • 可以遍历两个字符串来匹配数字,也可以通过字符串的split()和``substring()`API来获取数字

    • 如果手动转成数值时,注意存在负号的情况,或者使用parseInt()API,可以处理负数

  • 题解

    <pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java" cid="n65" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 0px; margin-top: 0px; width: inherit;">public String complexNumberMultiply(String num1, String num2) {
    String[] s1 = num1.split("\+");
    String[] s2 = num2.split("\+");
    int a = Integer.parseInt(s1[0]);
    int b = Integer.parseInt(s1[1].substring(0, s1[1].length() - 1));
    int c = Integer.parseInt(s2[0]);
    int d = Integer.parseInt(s2[1].substring(0, s2[1].length() - 1));
    int re = a * c - b * d;
    int im = a * d + b * c;
    return re + "+" + im + "i";
    }</pre>

  • 复杂度分析:m, n 是两个字符串的大小

    • 时间复杂度:O(m+n)

    • 空间复杂度:O(1)


最后

如果本文有所帮助的话,欢迎大家可以给个三连「点赞」&「收藏」&「关注」 ~ ~ ~

也希望大家有空的时候光临我的其他平台,上面会更新Java面经、八股文、刷题记录等等,欢迎大家光临交流,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容