2018-12-01 字符串相乘

題目:

字符串相乘

解法:

模擬手算乘法的過(guò)程, 首先, 我先把字符串計(jì)算結(jié)果從個(gè)位十位百位的從左往右排列, 計(jì)算完然后輸出字符串的時(shí)候又從右往左遍歷.

public String multiply(String num1, String num2) {
    // num1乘以num2不會(huì)超過(guò)他們兩個(gè)的長(zhǎng)度
    int len1 = num1.length();
    int len2 = num2.length();

    // 個(gè)位, 十位, 百位...
    int[] result = new int[len1 + len2];

    for (int i = len1 - 1; i >= 0; i--) {
        for (int j = len2 - 1; j >= 0; j--) {
            int n1 = num1.charAt(i) - '0';
            int n2 = num2.charAt(j) - '0';
            // 需要倒轉(zhuǎn)一下,保持 個(gè)位, 十位, 百位這樣的順序
            result[len1 + len2 - 2 - (i + j)] += n1 * n2;
        }
    }

    // 所得的結(jié)果需要進(jìn)位, 從個(gè)位開(kāi)始加
    int carry = 0;
    for (int i = 0; i < result.length; i++) {
        result[i] += carry;
        // 求進(jìn)位
        carry = result[i] / 10;
        // 得數(shù)位上的數(shù)
        result[i] = result[i] % 10;
    }

    // 轉(zhuǎn)化成字符串
    StringBuilder sb = new StringBuilder();
    boolean initFlag = true;
    for (int i = result.length - 1; i >= 0; i--) {
        // 從高位向低位append
        if ((initFlag == true) && (result[i] == 0)) {
            continue;
        }
        initFlag = false;
        sb.append(result[i]);
    }
    return sb.length() == 0 ? "0" : sb.toString();
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語(yǔ)言,java語(yǔ)言,單片機(jī)的匯編語(yǔ)言等;大學(xué)畢...
    oceanfive閱讀 3,398評(píng)論 0 7
  • 1.把二元查找樹(shù)轉(zhuǎn)變成排序的雙向鏈表 題目: 輸入一棵二元查找樹(shù),將該二元查找樹(shù)轉(zhuǎn)換成一個(gè)排序的雙向鏈表。 要求不...
    曲終人散Li閱讀 3,520評(píng)論 0 19
  • 靈魂被困在肉體內(nèi),并不能體現(xiàn),也不能釋放 孤獨(dú)的消耗掉,最后和實(shí)體一起消失,注入另一種容器 依然孤獨(dú),慢慢...
    醒著嗎閱讀 233評(píng)論 0 0
  • 2018年9月6日 星期四 晴 前進(jìn)的路上 可能荊棘遍地,雜草縱生 那就磨練意志吧 前進(jìn)路上 可能閑言碎語(yǔ),異樣眼...
    花海云裳閱讀 956評(píng)論 21 21
  • C++ 構(gòu)造和析構(gòu)函數(shù) 構(gòu)造函數(shù) 類的設(shè)計(jì)者通過(guò)提供一個(gè)構(gòu)造函數(shù)(constructor)的特殊函數(shù)來(lái)保證每個(gè)對(duì)象...
    zjunchao閱讀 193評(píng)論 0 0

友情鏈接更多精彩內(nèi)容