`
huntfor
  • 浏览: 195219 次
  • 性别: 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics