一、题目信息
题目来源:牛客网 / LeetCode537
题目要求输入两个字符串,分别为两个复数的表达式,需要你输出两个复数的乘法结果。
二、解题方法
分别获取两个字符串的整数部分,再把这两部分字符串转换成整数,最后用复数乘法公式得出结果。
复数乘法公式:
也就是说我们只需要在两个字符串中获取a,b,x,y这四个数字。我这里用一个stringtoInt方法解决。具体思路在代码中
三、实现代码
如果是在牛客网上做题,需要自己定义Main函数,和输入输出。
class Main{
public static int stringtoInt(String s){
int num=0;
int flag=11;
for (int i = 0; i <s.length() ; i++) {
//如果有符号,说明是复数
if(s.charAt(i)=='-'){
flag=-1;
}
else if(s.charAt(i)>='0' && s.charAt(i)<='9'){
//eg: s='112'
num=num\*10+(s.charAt(i)-'0');
}
}
return num \*flag;
}
public static void main(String[] args) {
String s1,s2;
Scanner scanner=new Scanner(System.in);
s1=scanner.nextLine();
s2=scanner.nextLine();
//截取整数部分
String s1First=s1.substring(0,s1.indexOf('+'));
String s2First=s2.substring(0,s2.indexOf('+'));
//获取复数部分
String s1Second =s1.substring(s1.indexOf('+')+1);
String s2Second =s2.substring(s2.indexOf('+')+1);
//把字符串转换成整数 复数和整数都是
int s1F=stringtoInt(s1First);
int s2F=stringtoInt(s2First);
int s1S=stringtoInt(s1Second);
int s2S=stringtoInt(s2Second);
//(a+ib)×(x+iy)=ax+i^2by+i(bx+ay)
//=ax−by+i(bx+ay)
//
//计算整数部分
int F=s1F\*s2F -s1S\*s2S;
//计算复数部分
int S=s1F\*s2S+s1S\*s2F;
System.out.println(F+"+"+S+"i");
}
}
最后
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中…(img-msYoQbO8-1714670351920)]