前言
大家好,我是新人简书博主:「 个人主页」主要分享程序员生活、编程技术、* * 以及每日的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面经、八股文、刷题记录等等,欢迎大家光临交流,谢谢!