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
  • 相关阅读:
    反射
    java 验证码识别
    Spring boot + mybatis + orcale
    JVM内存模型及垃圾回收的研究总结
    Java的Array和ArrayList
    Java中最常见的十道面试题
    session和cookie
    Hibernate的load()和get()区别
    ajax跨域获取网站json数据
    对于Spring的IOc和DI的理解
  • 原文地址:https://www.cnblogs.com/573177885qq/p/5748117.html
Copyright © 2011-2022 走看看