[leetcode] 复数乘法 基础模拟

简介: [leetcode] 复数乘法 基础模拟

题目链接

f3b966011499481d83ba219dd9cca936.png

class Solution {
public:
    string complexNumberMultiply(string num1, string num2) {
        int shi1 = 0, shi2 = 0;
        int xu1 = 0, xu2 = 0;
        shi1 = getShi(num1);
        shi2 = getShi(num2);
        xu1 = getXu(num1);
        xu2 = getXu(num2);
        string ans = "";
        int shi = shi1 * shi2 - xu1 * xu2;
        int xu = shi1 * xu2 + xu1 * shi2;
        ans += toString(shi) + "+";
        ans += toString(xu) + "i";
        return ans;
    }
    int getShi(string s) {
        int len = s.size();
        int ret = 0;
        int fu = 1;
        for(int i = 0; i < len; i ++) {
            if(s[i] == '-') {
                fu = -1;
                continue;
            }
            if(s[i] == '+') break;
            ret = ret * 10 + s[i] - '0';
        }
        return ret * fu;
    }
    int getXu(string s) {
        int ret = 0;
        int len = s.size();
        int flag = 0;
        int fu = 1;
        for(int i = 0; i < len; i ++) {
            if(s[i] == '+') flag = 1;
            if(s[i] == '-' && i != 0) {
                fu = -1;
                continue;
            }
            if(s[i] == 'i') break;
            if(flag && isdigit(s[i])) {
                ret = ret * 10 + s[i] - '0';
            }
        }
        return ret * fu;
    }
    string toString(int n) {
        if(n == 0) {
            string t = "0";
            return t;
        }
        string ret = "";
        int fu = 0;
        if(n < 0) fu = 1, n *= -1;
        while(n) {
            int t = n % 10;
            n /= 10;
            ret.push_back('0' + t);
        }
        reverse(ret.begin(),ret.end());
        if(fu == 1) {
            ret = "-" + ret;
        }
        return ret;
    }
};


066b7dc42206473385020fc905dacfa5.png


文章知识点与官方知识档案匹配,可进一步学习相关知识

算法技能树leetcode-动态规划22-括号生成8242 人正在系统学习中

目录
相关文章
|
7月前
|
机器学习/深度学习
【Leetcode】面试题 08.05. 递归乘法、HJ55 挑7
目录 面试题 08.05. 递归乘法 HJ55 挑7
43 0
|
4天前
|
算法
【刷题】 leetcode 面试题 08.05.递归乘法
递归算法是一种在计算机科学和数学中广泛应用的解决问题的方法,其基本思想是利用问题的自我相似性,即将一个大问题分解为一个或多个相同或相似的小问题来解决。递归算法的核心在于函数(或过程)能够直接或间接地调用自身来求解问题的不同部分,直到达到基本情况(也称为基础案例或终止条件),这时可以直接得出答案而不必再进行递归调用。
25 4
【刷题】 leetcode 面试题 08.05.递归乘法
|
存储 C++
【 LeetCode 热题 HOT 100】2. 两数相加 (C++ 链表 模拟)
【 LeetCode 热题 HOT 100】2. 两数相加 (C++ 链表 模拟)
128 0
【 LeetCode 热题 HOT 100】2. 两数相加 (C++ 链表 模拟)
|
C++ Python
LeetCode每日一题题解:537. 复数乘法-题解-python && C++源代码
LeetCode每日一题题解:537. 复数乘法-题解-python && C++源代码
|
算法
[leetcode] 最长公共前缀 简单水题模拟
根据数据范围来说,我们可以枚举最长公共前缀的长度,长度的范围是[0, minLen(strs)] 然后一边枚举长度一边判断是否成功即可 还有一种就是将判断是否满足公共前缀写成check函数,然后用二分的方法来得到最长的前缀长度 题目很水 Code:
90 0
[leetcode] 最长公共前缀 简单水题模拟
|
算法
[leetcode] 球会落何处 模拟
给出一个矩阵,里面的值为-1 or 1 -1的时候是从左上到右下,1的时候是从左下到右上 当一个球从上方x(0 < x < m)放入之后,从哪个出口掉落还是无法从出口掉落 能通过的情况为: / / 即某条线为’/’,其左边的线也是’/’,箭头所指为当前斜线 {\ } ↑ \ \ 即当前线为’’,其右边的线也是’’,箭头所指为当前斜线 {}↑ 但是还要注意边界问题
86 0
[leetcode] 球会落何处 模拟
|
机器学习/深度学习 算法
【刷穿 LeetCode】检测「环形数组是否存在循环」的三种方式:「朴素模拟」&「遍历标记(含优化)」
【刷穿 LeetCode】检测「环形数组是否存在循环」的三种方式:「朴素模拟」&「遍历标记(含优化)」
【LeetCode剑指offer57 II】和为s的连续正数序列(用vector模拟滑动窗口)
因为找的是连续子序列(并且题目的原序列是从小到大元素排列)的和为target,所以使用滑动窗口,如果加上当前元素后sum满足条件则push_back
106 0
【LeetCode剑指offer57 II】和为s的连续正数序列(用vector模拟滑动窗口)