zoukankan      html  css  js  c++  java
  • Multiply Strings

    思路很简单,将string转为int,计算完后再转为string,但要简洁的实现起来并不容易。

    typedef vector<int> bigint;
    
          bigint make_bigint(string const& s)
          {
              //将字符串转为vector<int>
              bigint n;
              //将s中的字符转为int,以逆序存储在n中,其中back_inserter返回的是n的最后一个位置的迭代器
              //注意lambda表达式的用法
              transform(s.rbegin(), s.rend(), back_inserter(n), [](char c){return c - '0'; });
              return n;
          }
          //重载乘法运算符,双目运算,声明为友元
         friend bigint operator*(bigint const& x, bigint const& y)
          {
             bigint z(x.size() + y.size());
    
             for (int i = 0; i < x.size(); i++)
             {
                 for (int j = 0; j < y.size(); j++)
                 {
                     z[i + j] += x[i] * y[j];
                     z[i + j + 1] = z[i + j] / 10;
                     z[i + j] = z[i + j] % 10;
                 }
             }
    
             return z;
          }
    
         string to_string(bigint const& n)
         {
             string str;
             transform(find_if(n.rbegin(), n.rend(), [](char c){return c > ''; }), n.rend(),
                 back_inserter(str), [](char c){return c + '0'; });
    
             return str;
         }
          string stringmulty(string s1, string s2)
          {
              return to_string(make_bigint(s1)*make_bigint(s2));
          }
    View Code
  • 相关阅读:
    理解cookie
    浏览器解析url后执行过程
    如何使用D3绘制折线图
    Django 笔记
    vi命令
    PEP8编程规范
    Python_入门第一篇【持续更新...】
    DjangoWeb _ 登录页开发test
    Django开发流程
    Django 笔记2018.2.7
  • 原文地址:https://www.cnblogs.com/573177885qq/p/5748117.html
Copyright © 2011-2022 走看看