字串相乘——求字串的乘積
給定兩個字串: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
- LeetCode-043-字串相乘LeetCode字串
- 力扣oj-字串相乘力扣字串
- 力扣#43 字串相乘(C++)力扣字串C++
- 【每週例題】力扣 C++ 字串相乘力扣C++字串
- oracle按列求乘積(轉)Oracle
- 求字串連續字元數量字串字元
- 字串-字串分割字串
- 【矩陣求導】關於點乘 (哈達瑪積)的矩陣求導矩陣求導點乘
- 編寫一個程式求輸入字串的長度字串
- KPM演算法求字串的最小週期證明演算法字串
- 求字串中不含重複字元的最長子串字串字元
- 字串-簡單字串排序字串排序
- xml字串轉JSON字串XML字串JSON
- Java™ 教程(比較字串和字串的部分)Java字串
- Python中的字串與字串格式化Python字串格式化
- 1085: 求奇數的乘積(多例項測試)(奇數判斷)
- 字串的操作字串
- 字串-簡單字串比較字串
- 字串查詢(字串雜湊)字串
- BZOJ4259: 殘缺的字串(FFT 字串匹配)FFT字串匹配
- 字串大小寫轉換和字串的比較字串
- 字串字串
- MySQL 字串函式:字串擷取MySql字串函式
- 中文字串 轉 unicode 編碼的字串字串Unicode
- Java中的字串Java字串
- Python中的字串Python字串
- 字串的建立辨析字串
- JAVA字串轉日期或日期轉字串Java字串
- JS json字串轉物件、物件轉字串JSON字串物件
- JavaScript字串指定位置插入新字串JavaScript字串
- 求迴文子序列個數(雖然字串,但是DP)字串
- POJ--2406Power Strings+KMP求字串最小週期KMP字串
- lua獲取字串中單引號之間的字串字串
- 字串篇(python)—兩個字串的最長公共子序列字串Python
- 字串碎片字串
- 【字串】Manacher字串