您的位置:首页 > 其它

LeetCode.537 Complex Number Multiplication

2017-12-02 22:43 120 查看
题目:

Given two strings representing two
complex numbers.

You need to return a string representing their multiplication. Note i2 = -1 according to the definition.

Example 1:

Input: "1+1i", "1+1i"
Output: "0+2i"
Explanation: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i, and you need convert it to the form of 0+2i.

Example 2:

Input: "1+-1i", "1+-1i"
Output: "0+-2i"
Explanation: (1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i, and you need convert it to the form of 0+-2i.

Note:

The input strings will not have extra blank.
The input strings will be given in the form of a+bi, where the integer
a and b will both belong to the range of [-100, 100]. And
the output should be also in this form.

分析:
class Solution {
public String complexNumberMultiply(String a1, String b1) {
//给定两个复数,求两者的乘积,最后返回结果。
//(a+bi)(c+di)=ac+adi+bci-(bd)
//注意:给定的字符串满足上述格式,a和b 范围均为-100、100
int a=divideNum(a1)[0];
int b=divideNum(a1)[1];
int c=divideNum(b1)[0];
int d=divideNum(b1)[1];

int natureNum=a*c-b*d;
int complexNum=a*d+b*c;
return natureNum+"+"+complexNum+"i";

}
//切分数据
public int[] divideNum(String a){
int [] res=new int[2];
//对于单个匹配字段,如+,*,|、\等,可以使用类似于“\\+"或者[+]进行处理,如图所示:
String[] str=a.split("\\+");
char [] chf=str[0].toCharArray();
int former=0;
if(chf[0]!='-'){
//正数
for(char c:chf){
former=former*10+c-'0';
}
}else{
//复数
for(int i=1;i<chf.length;i++){
former=former*10+chf[i]-'0';
}
former=-former;
}

String [] sl=str[1].split("i");
int later=0;
char [] chl=sl[0].toCharArray();
if(chl[0]!='-'){
//复数
for(char c:chl){
later=later*10+c-'0';
}
}else {
//正数
for(int i=1;i<chl.length;i++){
later=later*10+chl[i]-'0';
}
later=-later;
}
res[0]=former;
res[1]=later;
return res;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: