`
huntfor
  • 浏览: 201670 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[leetcode]Multiply Strings

 
阅读更多

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.

 让大家见识见识第一次的算法提交之后有多坑。

最后一个case没过,我忍了,但是尼玛这个结果是什么情况,这么长的结果,就一位错了,debug都不能啊魂淡,你要闹哪样啊小婊砸。

然后那晚上就抓狂了,放了一段时间之后,再做,借鉴别人的思路,有了以下的做法,这道题原作者已经分析的非常好了,图文并茂,不信点这里。我就不鹦鹉学舌了。

不过需要注意的是:

1. 去掉高位的0(如00142,返回142)

2. 结果是0

代码如下:

public String multiply(String num1,String num2){
		if(num1 == null || num2 == null || num1.length() == 0 || num2.length() == 0) return null;
		int num1Length = num1.length(),num2Length = num2.length();
		char[] n1 = num1.toCharArray(),n2 = num2.toCharArray();
		int[] result = new int[num1Length + num2Length];

		for(int i = 0 ; i < num1Length; i++){
			for(int j = 0 ; j < num2Length; j++){
				result[i + j] = result[i + j] + (n1[i] - '0') * (n2[j] - '0');
			}
		}
		int tem = 0;
		for(int i = result.length - 1; i >= 0; i--){
			result[i] += tem;
			if(result[i] > 9){
				tem = result[i] / 10;
				result[i] %= 10;
			}else{
				tem = 0;
			}
			if(i != result.length - 1){
				result[i + 1] = result[i];
			}
		}
		result[0] = tem;
		
		int highIndex = 0;
		while(highIndex < result.length && result[highIndex] == 0) highIndex++;
		if(highIndex >= result.length) return "0";
		StringBuilder sb = new StringBuilder();
		for(int i = highIndex; i < result.length; i++){
			sb.append(result[i]);
		}
		return sb.toString();
	}

 

 

  • 大小: 57.3 KB
分享到:
评论

相关推荐

    java-leetcode题解之Multiply Strings.java

    java java_leetcode题解之Multiply Strings.java

    C语言-leetcode题解之43-multiply-strings.c

    c语言入门 C语言_leetcode题解之43-multiply-strings.c

    js-leetcode题解之43-multiply-strings.js

    js js_leetcode题解之43-multiply-strings.js

    LeetCode最全代码

    # [LeetCode](https://leetcode.com/problemset/algorithms/) ![Language](https://img.shields.io/badge/language-Python%20%2F%20C++%2011-orange.svg) [![License]...

    leetcodepython001-LeetCode:力码

    Multiply Strings 066 Add Binary Linked-list 002 Add Two Numbers Stack 020 Valid Parenthesis Hash Table 001 TwoSum Reference 完整的学习流程 How to be a softwair engineer: 其他人详解 Python的各式演算法

    _leetcode-python.pdf

    - Multiply Strings: 给定两个非负整数字符串形式的数,要求进行乘法运算。 - Wildcard Matching: 实现支持'?'和'*'的通配符匹配。 - Jump Game / Jump Game II: 第一个问题要求判断是否能到达数组的最后一个位置,...

    leetcode卡-LeetCode:LeetCode题解

    leetcode卡 LeetCode LeetCode题解 目录 字符串问题 ID Title C++ 难度 备注 0008 String to Integer(atoi) :star: :star: :star: ...Multiply Strings :star: :star: 大数相乘 0044 Wild Card Matchi

    Leetcode部分试题解析

    22. **Multiply Strings**:两个字符串表示的数相乘。同样模拟笔算乘法,使用二维数组存储中间结果。 23. **Rotate Array**:将数组顺时针旋转指定步数。可以先反转整个数组,再反转前半部分和后半部分。 24. **...

    C语言入门-leetcode练习之第43题字符串相乘.zip

    第43题:字符串相乘(Multiply Strings) 题目描述: 给定两个非负整数num1和num2,它们的长度相同,用字符串形式表示。你的任务是计算它们的乘积,并返回结果字符串。例如,"2" 和 "3" 相乘等于 "6"。 解决方案:...

    python-leetcode面试题解之第43题字符串相乘-题解.zip

    在本压缩包中,主题聚焦于使用Python解决LeetCode第43题——“字符串相乘”(Multiply Strings)。这是一道常见的编程面试题,旨在测试应聘者的字符串处理和算法设计能力。下面将详细探讨该题目的背景、解题思路、...

Global site tag (gtag.js) - Google Analytics