生活随笔
收集整理的這篇文章主要介紹了
LeeCode_MultiplyStrings
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
經(jīng)過昨天一天,還有今天的學(xué)習(xí),終于是把第一個(gè)程序給搞出來,雖然是借鑒他人的,但是還是收獲頗多。現(xiàn)在把
這個(gè)程序的問題,和解決方案在下面貼出:
MultiplyStrings
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.
給定用字符串表示的兩個(gè)數(shù)字,計(jì)算其乘積:
public class MultiplyStrings {//這種算法是模擬了正常的乘積運(yùn)算解出答案。<span style="white-space:pre"> </span>//原始解法中問號(hào)部分,我認(rèn)為是不需要的,不太理解是什么意思,<span style="white-space:pre"> </span>//我在Leecode中測(cè)試是可以通過的。public static void main(String[] args) {String a1 = "12888";String b1 = "13131555";String s = multiply(a1, b1);System.out.println("s =" + s);}public static String multiply(String num1, String num2) {StringBuilder s1 = new StringBuilder(num1).reverse();StringBuilder s2 = new StringBuilder(num2).reverse();int l1 = s1.length();int l2 = s2.length();int[] result = new int[l1 + l2 - 1];for(int i = 0; i < l1; i++){for(int j = 0; j < l2; j++){result[i+j] += (s1.charAt(i) - '0') * (s2.charAt(j) - '0');}}//System.out.println(Arrays.toString(result));StringBuilder s = new StringBuilder();int carry = 0;for(int i = 0; i < result.length; i++){int currDigit = (result[i] + carry) % 10;carry = (result[i]+carry)/10;s.insert(0, currDigit);System.out.println(s);}if(carry!=0){s.insert(0, carry);}
/*???????????????????????????????????????????????????????int i = 0;while( i < s.length() && s.charAt(i) == '0'){i++;}if(i == s.length() ) s.delete(0,i-1);else s.delete(0, i);
*/return s.toString();}
}
轉(zhuǎn)載于:https://www.cnblogs.com/sunbinbin/p/5122560.html
總結(jié)
以上是生活随笔為你收集整理的LeeCode_MultiplyStrings的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。