牛客网精选好题|复数乘法 哔哩哔哩2020校园招聘面试题详解
文章图片
一、题目信息 题目来源:牛客网 / LeetCode537
文章图片
文章图片
题目要求输入两个字符串,分别为两个复数的表达式,需要你输出两个复数的乘法结果。二、解题方法 分别获取两个字符串的整数部分,再把这两部分字符串转换成整数,最后用复数乘法公式得出结果。
复数乘法公式:
文章图片
也就是说我们只需要在两个字符串中获取a,b,x,y这四个数字。我这里用一个stringtoInt方法解决。具体思路在代码中
三、实现代码 如果是在牛客网上做题,需要自己定义Main函数,和输入输出。
classMain{publicstaticint stringtoInt(String s){int num=0;
int flag=11;
for (int i = 0;
i .length() ;
i++) {//如果有符号,说明是复数
if(s.charAt(i)=='-'){flag=-1;
}
elseif(s.charAt(i)>='0' && s.charAt(i)<='9'){//eg:s='112'
num=num*10+(s.charAt(i)-'0');
}
}
returnnum *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?面试题逆置字符串讲解
【牛客网精选好题|复数乘法 哔哩哔哩2020校园招聘面试题详解】三种方法任君挑选 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 的子数组 前缀和+哈希表优化讲解
推荐阅读
- 怎样挑选好的冰淇淋
- 选好了创业项目之后你该怎么做才能赚钱
- 牛客网Wannafly挑战赛25|牛客网Wannafly挑战赛25 A题
- 牛客练习赛3|牛客练习赛3 B - 贝伦卡斯泰露
- 牛客网_Wannafly模拟赛1
- #|牛客算法题——NC15553 数学考试【所用算法(前缀和】)
- 牛客算法周周练15——A、B
- 前后缀和|牛客小白月赛5 I.区间 (interval)
- 牛客 C. 子段乘积(线段树)
- 牛客挑战赛39 C 牛牛的等差数列(线段树)(*)