Multiply Strings [LeetCode]
Problem Description http://oj.leetcode.com/problems/multiply-strings/
Basic idea is to multiply two nums like we do caculation on paper, one by one digital multiplication, then add the temporary results together to get the final one. Be careful about the last carry digital.
- class Solution {
- public:
- string multiply_one_digital(char c, string num2, int tail){
- string result;
- for(int i = ; i < tail; i ++) {
- result.push_back('');
- }
- int carry = ;
- for(int i = num2.size() - ; i >= ; i-- ) {
- int one_result = (c - ) * (num2[i] - ) + carry;
- carry = one_result/;
- char current_digital = one_result % + ;
- result.insert(result.begin(),current_digital);
- }
- if(carry > )
- result.insert(result.begin(), (char)(carry + ));
- return result;
- }
- string multiply(string num1, string num2) {
- // Note: The Solution object is instantiated only once and is reused by each test case.
- string result;
- if(num1.size() == || num2.size() == )
- return result;
- if((num1.size() == && num1[] == '') ||
- (num2.size() == && num2[] == '')) {
- result.push_back('');
- return result;
- }
- vector<string> tmp_results;
- for(int i = num1.size() - ; i >= ; i -- ) {
- if(num1[i] == '')
- continue;
- tmp_results.push_back(multiply_one_digital(num1[i], num2, num1.size() - - i));
- }
- //add all temporary results
- string last_tmp_result = tmp_results[tmp_results.size() - ];
- int carry = ;
- for(int i = ; i < last_tmp_result.size(); i ++ ){
- int one_result = ;
- for( auto item: tmp_results) {
- if(i > item.size() - )
- continue;
- one_result += (item[item.size() - - i] - );
- }
- one_result += carry;
- carry = one_result/;
- char current_digital = one_result % + ;
- result.insert(result.begin(),current_digital);
- }
- if(carry > )
- result.insert(result.begin(), (char)(carry + ));
- return result;
- }
- };
Multiply Strings [LeetCode]的更多相关文章
- Multiply Strings leetcode java
题目: Given two numbers represented as strings, return multiplication of the numbers as a string. Note ...
- leetcode面试准备:Multiply Strings
1 题目 Given two numbers represented as strings, return multiplication of the numbers as a string. Not ...
- [Leetcode][Python]43: Multiply Strings
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 43: Multiply Stringshttps://leetcode.co ...
- [LeetCode] 415 Add Strings && 67 Add Binary && 43 Multiply Strings
这些题目是高精度加法和高精度乘法相关的,复习了一下就做了,没想到难住自己的是C++里面string的用法. 原题地址: 415 Add Strings:https://leetcode.com/pro ...
- LeetCode解题报告—— Combination Sum & Combination Sum II & Multiply Strings
1. Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T) ...
- LeetCode 43. 字符串相乘(Multiply Strings)
43. 字符串相乘 43. Multiply Strings 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...
- 【leetcode】Multiply Strings
Multiply Strings Given two numbers represented as strings, return multiplication of the numbers as a ...
- 【LeetCode练习题】Multiply Strings
Multiply Strings Given two numbers represented as strings, return multiplication of the numbers as a ...
- [LeetCode] 43. Multiply Strings ☆☆☆(字符串相乘)
转载:43. Multiply Strings 题目描述 就是两个数相乘,输出结果,只不过数字很大很大,都是用 String 存储的.也就是传说中的大数相乘. 解法一 我们就模仿我们在纸上做乘法的过程 ...
随机推荐
- Populating Tabular Data Block Manually Using Cursor in Oracle Forms
Suppose you want to populate a non-database data block with records manually in Oracle forms. This t ...
- redis数据库选择-select
1.关于redis的select命令用法: SELECT index 切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值. 默认使用 0 号数据库. 可用版本: > ...
- iOS - OC Category 分类
1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...
- 06 SQL执行计划
解释计划 与 执行计划的 区别 随着可以得到解释计划输出的开发工具, 比如 toad 的普遍使用, 生成解释计划就变的相当简单. 而不简单的是得到执行计划. 解释计划 EXPLAIN PLAN 用来显 ...
- IO端口和IO内存的区别及分别使用的函数接口
每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以把CPU分成两大类.一类CPU(如M68K,Po ...
- python操作postgresql数据库
import psycopg2 conn = psycopg2.connect(database=") cur = conn.cursor() cur.execute("CREAT ...
- linux内核的熵池
也可以看百度科 Linux内核采用熵来描述数据的随机性.熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大.在信息学中,熵被用来表征一个符号或 ...
- C++中的虚继承 & 重载隐藏覆盖的讨论
虚继承这个东西用的真不多.估计也就是面试的时候会用到吧.. 可以看这篇文章:<关于C++中的虚拟继承的一些总结> 虚拟基类是为解决多重继承而出现的. 如:类D继承自类B1.B2,而类B1. ...
- 【浏览器渲染原理】渲染树构建之渲染树和DOM树的关系(转载 学习中。。。)
在DOM树构建的同时,浏览器会构建渲染树(render tree).渲染树的节点(渲染器),在Gecko中称为frame,而在webkit中称为renderer.渲染器是在文档解析和创建DOM节点后创 ...
- 值类型,引用类型,栈,堆,ref,out
在网上收集... C#的值类型,引用类型,栈,堆,ref,out C# 的类型系统可分为两种类型,一是值类型,一是引用类型,这个每个C#程序员都了解.还有托管堆,栈,ref,out等等概念也是每个C# ...