用連結串列的方式實現大數相減-Java實現
package com.company;
import java.util.Objects;
public class Main {
public static void main(String[] args) {
// write your code here
String num1 = "30000001";
String num2 = "1000003";
if (!isDigitalNum(num1) || !isDigitalNum(num2)) {
System.out.println("數值不合法");
return;
}
Node node1 = new Node.Builder().setNumber(num1).build();
Node node2 = new Node.Builder().setNumber(num2).build();
String result = node1.next.add(node2.next, 0);
for (int i = 0; i < result.length(); ++i) {
if (result.charAt(i) != '0') {
System.out.println(result.substring(i));
break;
}
}
}
private static boolean isDigitalNum(String num) {
if (Objects.isNull(num) || "".equals(num))
return false;
for (int i = 0; i < num.length(); i++) {
if (num.charAt(i) < '0' && num.charAt(i) > '9') {
return false;
}
}
return true;
}
public static class Node {
int value;
Node next;
private void initCharacterChain(String num1) {
for (int i = num1.length() - 1; i >= 0; --i) {
this.value = num1.charAt(i);
this.next = new Node();
}
}
public static class Builder {
String numb;
public Builder setNumber(String numb) {
this.numb = numb;
return this;
}
public Node build() {
Node root = new Node();
Node p = root;
for (int i = numb.length() - 1; i >= 0; --i) {
Node node = new Node();
node.value = numb.charAt(i) - '0';
p.next = node;
p = p.next;
}
return root;
}
}
public String add(Node node, int carrier) {
if (this.next == null && node.next == null) {
int sum = this.value + node.value + carrier;
return sum + "";
}
int sum = 0;
if (node == null) {
node = new Node();
}
if (node.next == null) {
node.next = new Node();
}
if (this.next == null) {
this.next = new Node();
}
sum = node.value + carrier + this.value;
return this.next.add(node.next, sum / 10) + "" + sum % 10;
}
}
}
相關文章
- Java雙向連結串列的實現Java
- java實現連結串列反轉Java
- java實現雙向連結串列Java
- 連結串列-單連結串列實現
- Java兩種方式實現連結串列的刪除,返回頭結點Java
- Java實現連結串列帶註釋Java
- 用連結串列實現佇列的功能佇列
- 單連結串列實現
- pandas 實現兩個dataframe相減的方式
- 用單連結串列實現多項式加,減,乘,簡單微分
- 連結串列以及golang介入式連結串列的實現Golang
- Linux核心連結串列-通用連結串列的實現Linux
- 詳細分析連結串列的資料結構的實現過程(Java 實現)資料結構Java
- JAVA基礎:語言中連結串列和雙向連結串列的實現(轉)Java
- FreeRTOS連結串列實現
- 實現雙向連結串列
- C#實現連結串列C#
- pta重排連結串列(一個很清晰的實現,完全模擬連結串列的實現)
- 024 透過連結串列學Rust之非安全方式實現連結串列2Rust
- 024 通過連結串列學Rust之非安全方式實現連結串列2Rust
- 用JavaScript實現功能齊全的單連結串列JavaScript
- Rust 程式設計,用連結串列實現棧Rust程式設計
- 023 透過連結串列學Rust之非安全方式實現連結串列1Rust
- 023 通過連結串列學Rust之非安全方式實現連結串列1Rust
- go 實現單向連結串列Go
- Go實現雙向連結串列Go
- Python實現單連結串列Python
- TypeScript 實現連結串列反轉TypeScript
- golang 實現連結串列爽不爽?Golang
- C語言實現連結串列C語言
- c++實現單連結串列C++
- Java實現單向連結串列基本功能Java
- java不用api實現單連結串列反轉(二)JavaAPI
- 模擬STL連結串列類的實現
- 雙向連結串列的功能實現(初版
- 單向迴圈連結串列的實現
- PHP 使用連結串列實現對映PHP
- 連結串列找環(python實現)Python