Complex Number Multiplication

题目来源
求字符串复数的乘法操作。主要是考虑string的一些操作,我想了想,先找出“+”在哪里,然后分割实部和虚部,然后进行计算,用了stringstream。代码如下:

class Solution {
public:
    string complexNumberMultiply(string a, string b) {
        int n1 = a.size(), n2 = b.size();
        string realA, realB, imageA, imageB;
        for (int i=0; i<n1; i++) {
            if (a[i] == '+') {
                realA = a.substr(0, i);
                imageA = a.substr(i+1, n1-i-2);
            }
        }
        for (int i=0; i<n2; i++) {
            if (b[i] == '+') {
                realB = b.substr(0, i);
                imageB = b.substr(i+1, n2-i-2);
            }
        }
        int irealA, irealB, iimageA, iimageB;
        istringstream (realA) >> irealA;
        istringstream (realB) >> irealB;
        istringstream (imageA) >> iimageA;
        istringstream (imageB) >> iimageB;
        return to_string(irealA * irealB - iimageA * iimageB) + "+" + to_string(irealA * iimageB + irealB * iimageA) + "i";
    }
};

然后发现自己还是太弱了,streamstring不会用。
看了下讨论区,代码如下:

class Solution {
public:
    string complexNumberMultiply(string a, string b) {
        int ra, ia, rb, ib;
        char buff;
        stringstream aa(a), bb(b), ans;
        aa >> ra >> buff >> ia >> buff;
        bb >> rb >> buff >> ib >> buff;
        ans << ra*rb - ia*ib << "+" << ra*ib + rb*ia << "i";
        return ans.str();
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这道题虽然并不难,复数相乘的问题,但也可以回顾一下字符串和int相互转化的方法。字符串一般有char数组和c++中...
    风之羁绊阅读 1,014评论 0 0
  • 题目 Given two strings representing two complex numbers. Yo...
    Eazow阅读 2,713评论 0 0
  • Given two strings representing two complex numbers.You ne...
    namelessEcho阅读 721评论 0 0
  • 一世情缘相识未相守 怜 彼岸花开许七世缘 一世孽缘情不知 两世为敌亦有情 三世相守终难老 四世有情悔无时 五世血亲...
    羽翼die阅读 1,859评论 0 1
  • 按道理说,刚过完年,不应该说这些不好的什么情绪啊,事情啊。但是我今天也不太能搞明白自己,就是感觉有点混沌,我没有办...
    杂草妖精阅读 741评论 0 0