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:
Example 2:
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;
}
}
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;
}
}
相关文章推荐
- 537. Complex Number Multiplication
- 537.Complex Number Multiplication
- 537. Complex Number Multiplication
- 537. Complex Number Multiplication
- [leetcode]-537 Complex Number Multiplication
- 537. Complex Number Multiplication
- 537. Complex Number Multiplication
- LeetCode - Complex Number Multiplication
- 537. Complex Number Multiplication
- 537. Complex Number Multiplication
- 537. Complex Number Multiplication
- [LeetCode-Algorithms-537] "Complex Number Multiplication" (2017.12.7-WEEK14)
- leetcode-complex number multiplication
- LeetCode Complex Number Multiplication
- [LeetCode] Complex Number Multiplication 复数相乘
- Complex Number Multiplication问题及解法
- Math-537-Complex Number Multiplication
- 537. Complex Number Multiplication
- lintcode/leetcode由易至难第22题:Complex Number Multiplication
- Complex Number Multiplication