
一、題目資訊
題目來源:牛客網 / 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");
}
}

四、其他題目分享
劍指 Offer 67. 把字串轉換成整數
怎么把i am a student逆置成student a am i?面試題逆置字串講解
三種方法任君挑選 LeetCode_136只出現一次的數字
什么?動態規劃10行求出連續子陣列的最大和 劍指offer-42講解
劍指 Offer 39. 陣列中出現次數超過一半的數字 簡單易懂14行搞定 ,人人皆可會
二叉樹的層序遍歷原理+LeetCode真題練習
LeetCode 24:兩兩交換鏈表中的節點,1662. 檢查兩個字串陣列是否相等
LeetCode 21. 合并兩個有序鏈表
劍指 Offer 58 - II. 左旋轉字串的三種解法一起看看吧!!
字串“aabcccccaaa”壓縮成“a2b1c5a3“還要回傳更小的?力扣面試題 01.06. 字串壓縮講解
字串bit666keji123“中數字的個數?
找到不重復的數字進階版 空間復雜度O(1),時間O(n)平方,不能修改陣列內容,不能對陣列進行排序
LeetCode_231. 判斷一個數是否為2 的冪,與運算一行代碼解決
驗證尼科徹斯定理,即:任何一個整數m的立方都可以寫成m個連續奇數之和
劍指 Offer II 010. 和為 k 的子陣列 前綴和+哈希表優化講解
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298374.html
標籤:其他
上一篇:劍指offer系列——劍指 Offer 18. 洗掉鏈表的節點(C語言)
下一篇:面向物件 方法
