当前位置: 首页 > news >正文

LeetCode -- Multiply Strings

题目描述:
Given two numbers represented as strings, return multiplication of the numbers as a string.


Note: The numbers can be arbitrarily large and are non-negative.


Subscribe to see which companies asked this question


完成两个字符串相乘。


思路:


1. 实现1个字符与字符串的相乘函数
2. 实现两个字符串相加的函数
3. 遍历num1[],将num1[i]与num2相乘得到r,使用result累加保存r (r需要每次追加'0')。




实现代码:




public class Solution {
    public string Multiply(string num1, string num2) 
    {
        if(string.IsNullOrEmpty(num1) || string.IsNullOrEmpty(num2)){
    		return "";
    	}
        if(num1 == "0" || num2 == "0"){
            return "0";
        }
        
    	var p1 = num1.Length - 1;
    	var p2 = num2.Length - 1;
    	
    	var result = string.Empty;
    	var pow = "";
    	for(var i = p1;i >= 0;i --){
    		var r = Multiply(num1[i], num2) + pow;
    		if(result == string.Empty){
    			result = r;
    		}
    		else{
    			result = Add(r, result);
    		}
    		
    		pow += "0";
    	}
    	
    	return result;
    }
    
    
    
    private string Add(string s1, string s2)
    {
    	var p1 = s1.Length - 1;
    	var p2 = s2.Length - 1;
    	
    	var carry = 0;
    	var result = "";
    	while(p1 >= 0 || p2 >= 0){
    		var n1 = 0;
    		var n2 = 0;
    		if(p1 >= 0){
    			n1 = s1[p1] - '0';
    		}
    		if(p2 >= 0){
    			n2 = s2[p2] - '0';
    		}
    		
    		var r = n1 + n2 + carry;
    		carry = r / 10;
    		result = r % 10 + result;
    		
    		p1 --;
    		p2 --;
    	}
    	
    	if(carry > 0){
    		result = carry + result;
    	}
    	
    	return result;
    }
    
    private string Multiply(char c, string s)
    {
    	var d = c - '0';
    	if(d == 0){
    		return "0";
    	}
    	
    	var carry = 0;
    	var result = "";
    	for(var i = s.Length - 1;i >= 0; i--){
    		var n = s[i] - '0';
    		var r = d * n + carry;
    		carry = r / 10;
    		result = r % 10 + result;
    	}
    	if(carry > 0){
    		result = carry + result;
    	}
    	return result;
    }
}


相关文章:

  • ArcGIS Server Java ADF 案例教程 27
  • LeetCode -- Permutations II
  • SQL语句性能调整之ORACLE的执行计划
  • LeetCode -- Product of Array Except Self
  • 不知道为什么我的一oracle的sql调优文章笔记无法发表,提示“文章中出现禁止的词语,系统不予接受。”...
  • LeetCode -- Remove Duplicates From Sorted Array 2
  • 好人陈虻
  • LeetCode -- Reverse Bits
  • LeetCode -- Rotate Array
  • SQL2005CLR函数扩展-天气服务
  • LeetCode -- String to Integer (atoi)
  • JavaScript 读写文件
  • LeetCode -- Subsets
  • 也谈实体验证(Entity Validation)
  • LeetCode -- Symmetric Tree
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • iOS | NSProxy
  • jquery cookie
  • Just for fun——迅速写完快速排序
  • Linux Process Manage
  • Meteor的表单提交:Form
  • Mysql数据库的条件查询语句
  • MySQL用户中的%到底包不包括localhost?
  • Shell编程
  • Twitter赢在开放,三年创造奇迹
  • 记一次删除Git记录中的大文件的过程
  • 面试遇到的一些题
  • 模型微调
  • 前端技术周刊 2019-01-14:客户端存储
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #define 用法
  • #pragma once
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (独孤九剑)--文件系统
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (七)c52学习之旅-中断
  • (四)Linux Shell编程——输入输出重定向
  • (转)JAVA中的堆栈
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .aanva
  • .java 9 找不到符号_java找不到符号
  • .net web项目 调用webService
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET文档生成工具ADB使用图文教程
  • .net专家(张羿专栏)
  • [ 第一章] JavaScript 简史
  • [20190401]关于semtimedop函数调用.txt
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [Android View] 可绘制形状 (Shape Xml)
  • [Android]创建TabBar