字串相乘——求字串的乘積
給定兩個字串:num1=“123”,num2=“456”,不能使用大數BigInterger和直接轉換成數字來處理,計算結果,存為字串
package com.Leetcode.字串相乘;
/**
* @author
* @date 2020/9/30
* 給定兩個字串:num1=“123”,num2=“456”,不能使用大數BigInterger和直接轉換成數字來處理,計算結果,存為字串
* 思路:(1)先計算每一位數字相乘的結果,儲存在集合中,不進行進位操作
* (2)遍歷集合,進行進位操作
*/
public class StrMut {
public static void main(String[] args) {
String result = strMut("11","11");
System.out.println(result);
}
private static String strMut(String num1, String num2) {
if ("0".equals(num1) || "0".equals(num2)){
return "0";
}
int len1 = num1.length();
int len2 = num2.length();
//兩個數字相乘,結果不會超過len1+len2的長度
int[] str = new int[len1 + len2];
//迴圈相乘,結果記錄在陣列中,不進位
for (int i = len1 - 1; i >= 0; i--) {
int n1 = num1.charAt(i) - '0';
for (int j = len2 - 1; j >= 0; j--) {
int n2 = num2.charAt(j) - '0';
str[i + j + 1] += n1 * n2;
}
}
//列印集合中資料,並做進位處理
for (int i = str.length - 1; i >= 1; i--) {
int num = str[i];
str[i] = num % 10;
int bitNum = num / 10;
str[i - 1] += bitNum;
}
//針對第一位數字為0開頭的結果做過濾處理
int index = str[0]==0?1:0;
StringBuffer sb = new StringBuffer();
while (index<str.length){
sb.append(str[index]);
index++;
}
return sb.toString();
}
}
相關文章
- 字串相乘字串
- leetcode:字串相乘(java)LeetCode字串Java
- 力扣oj-字串相乘力扣字串
- 力扣#43 字串相乘(C++)力扣字串C++
- LeetCode-043-字串相乘LeetCode字串
- oracle按列求乘積(轉)Oracle
- 【每週例題】力扣 C++ 字串相乘力扣C++字串
- 求字串中對稱的子字串的最大長度字串
- 【矩陣求導】關於點乘 (哈達瑪積)的矩陣求導矩陣求導點乘
- 【Kmp求字串字首在字串出現的次數】51nod 1277 字串中的最大值KMP字串
- 求給定字串的平均字元長度字串字元
- 求字串連續字元數量字串字元
- 華為機試題(9)--將兩個數從字串轉為數,將這兩個數做乘積後再轉化為字串儲存起來字串
- 子陣列的乘積陣列
- 字串-字串分割字串
- BZOJ4416 : [Shoi2013]階乘字串字串
- 如何去掉FireFoxajax請求返回字串的<pre>Firefox字串
- 【KMP求字串匹配次數】 hdu 1686KMP字串匹配
- Manacher-求最長迴文字串字串
- py匹配字串中間的字串字串
- iOS 擷取字串中兩個指定字串中間的字串iOS字串
- 求字串中不含重複字元的最長子串字串字元
- 編寫一個程式求輸入字串的長度字串
- KPM演算法求字串的最小週期證明演算法字串
- Js刪除字串中的指定字串JS字串
- 字串-簡單字串排序字串排序
- Java™ 教程(比較字串和字串的部分)Java字串
- 字串的操作字串
- 字串的排列字串
- 字串-簡單字串比較字串
- 字串查詢(字串雜湊)字串
- 比較字串和數字串字串
- xml字串轉JSON字串XML字串JSON
- 字串字串
- 字串大小寫轉換和字串的比較字串
- Python中的字串與字串格式化Python字串格式化
- BZOJ4259: 殘缺的字串(FFT 字串匹配)FFT字串匹配
- 取字串左邊指定長度的子字串字串