Skip to main content

Leet Code Problem #537. Complex Number Multiplication

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.
 

Solution in C++:

    string complexNumberMultiply(string a, string b) {
        int a1 = 0;
        int a2 = 0;
        int b1 = 0;
        int b2 = 0;
        string ret;
        cal(a, a1, a2);
        cal(b, b1, b2);
        int real = a1 * b1 - a2 * b2;
        int imag = a1 * b2 + a2 * b1;
        char final_arr[30];
       
        sprintf(final_arr, "%d+%di", real, imag);

        for(int it = 0; it  < strlen(final_arr); ++it){
            ret.push_back(final_arr[it]);
        }
        return ret;
    }
   
    void cal(string s, int &a1, int &a2){
        int iter = 0;
        bool  is_a1_neg = false;
        char a[5] = {0};
        if(s[0] == '-'){
            is_a1_neg = true;
        }
        while(iter < s.length()){
           
            if(s[iter] == '+'){
               
                if(is_a1_neg){
                    s.copy(a, iter - 1, 1);
                    a[iter - 1] = '\0';
                    a1 = -atoi(a);
                } else {
                    s.copy(a, iter, 0);
                    a[iter] = '\0';
                    a1 = atoi(a);
                }  
                break;
            }
            ++iter;
        }
        ++iter;
        if(s[iter] == '-'){
            ++iter;
            s.copy(a, s.length() - iter, iter);
            a[s.length() - iter] = '\0';
            a2 = -atoi(a);
        } else {
            s.copy(a, s.length() - iter, iter);
            a[iter] = '\0';
            a2 = atoi(a);
        }
    } 

Comments

Post a Comment

Popular posts from this blog

Leet Code: Problem #710 Random Pick with Blacklist

Given a blacklist  B containing unique integers from [0, N) , write a function to return a uniform random integer from [0, N) which is NOT  in B . Optimize it such that it minimizes the call to system’s Math.random() . Note: 1 <= N <= 1000000000 0 <= B.length < min(100000, N) [0, N)  does NOT include N. See interval notation . Example 1: Input: ["Solution","pick","pick","pick"] [[1,[]],[],[],[]] Output: [null,0,0,0] Example 2: Input: ["Solution","pick","pick","pick"] [[2,[]],[],[],[]] Output: [null,1,1,1] Example 3: Input: ["Solution","pick","pick","pick"] [[3,[1]],[],[],[]] Output: [null,0,0,2] Example 4: Input: ["Solution","pick","pick","pick"] [[4,[2]],[],[],[]] Output: [null,1,3,1] Explanation of Input Syntax: The input is two lists: the subroutines called and their argume...

Creating Self Signed SSL Certificates for HTTPS Communication

Self Signed CA: Create Private Key for Self Signed CA openssl ecparam -genkey -name secp256r1 | openssl ec -out ca.key     Create CA Certificate for Self Signed CA openssl req -new -x509 -days 36500 -key ca.key -out ca.pem -subj "/C=IN/ST=Karnataka/L=Bengaluru/O=company name/OU=Prod Operations Department/CN=prodops .domain.com   Verify the content of CA certificate openssl x509 -in ca.pem -noout -text Client CERTIFICATE: CLIENT_ID="<Client-Product>" e.g. CLIENT_ID="ClientID" CLIENT_SERIAL="<Client-Release-Number>" e.g. CLIENT_SERIAL="6889" Create Private Key for Client openssl ecparam -genkey -name secp256r1 | openssl ec -out  ${CLIENT_ID}_${CLIENT_SERIAL}.key                   Generate the Certificate Signing Request CSR openssl req -new -key ${CLIENT_ID}_${CLIENT_SERIAL}.key -out ${CLIENT_ID}_${CLIENT_SERIAL}.csr -subj "/C=IN/ST=Karnataka/L=Bengalur...

Tree Data Structure related must solve programming questions: Part - 1

LeetCode Problem #687 Given a binary tree find the longest possible path with same node values. The length of the path is determined the number of edges between the node. Example 1: Input: 5 / \ 4 5 / \ \ 1 1 5 Output:  2   Example 2: Input: 1 / \ 4 5 / \ \ 4 4 5 Output:  2 Solution in C++: /**  * Definition for a binary tree node.  * struct TreeNode {  *     int val;  *     TreeNode *left;  *     TreeNode *right;  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}  * };  */ class Solution ...