0537. Complex Number Multiplication

0537. Complex Number Multiplication #

题目 #

  • 复数 可以用字符串表示,遵循 "**实部**+**虚部**i" 的形式,并满足下述条件:
    • 实部 是一个整数,取值范围是 [-100, 100]
    • 虚部 也是一个整数,取值范围是 [-100, 100]
    • i2 == -1
  • 给你两个字符串表示的复数 num1num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。

思路 #

模拟 #

正则 #

代码 #

模拟 #

class Solution {
    /** (a + bj)(c + dj) = (ac - bd) + (ad + bc) j */
    public String[] parseComplex(String num) {
        String real = "", imag = "";

        boolean imagFlag = false;
        char[] charArray = num.toCharArray();
        for (char ch: charArray) {
            if (ch == 'i') break;
            if (ch == '+') imagFlag = true;
            else if (imagFlag == false) real += String.valueOf(ch);
            else imag += String.valueOf(ch);
        }

        return new String[]{real, imag};
    }
    public String complexNumberMultiply(String num1, String num2) {
        String[] realImag1 = parseComplex(num1), realImag2 = parseComplex(num2);
        
        int real1 = Integer.parseInt(realImag1[0]), imag1 = Integer.parseInt(realImag1[1]);
        int real2 = Integer.parseInt(realImag2[0]), imag2 = Integer.parseInt(realImag2[1]);

        return String.valueOf(real1 * real2 - imag1 * imag2) + "+" + String.valueOf(real1 * imag2 + imag1 * real2) + "i";
    }
}

致谢 #

宫水三叶