자바 에서 long 범 위 를 초과 한 초대형 정수 더하기 알고리즘 상세 설명(면접 고주파)
이 문 제 는 면접 에서 자주 부 딪 히 는데,이전에 경험 하지 않 았 다 면 어떻게 해 야 할 지 잠시 생각 이 나 지 않 을 것 이다.
다음은 두 숫자 가 롱 의 범 위 를 넘 어 섰 다 는 것 을 분석 해 보 자.그것 은 자바 의 기본 숫자 유형 으로 계산 할 수 없 음 이 분명 하 다.
우 리 는 어 렸 을 때 덧셈 의 세로 식 연산 을 배 웠 는데,한 자 리 는 한 자 리 를 맞 추고,열 자 리 는 열 자 리 를 맞 추고,백 자 리 는 백 자 리 를 맞 추고,이런 식 으로 유추 할 수 있다.한 자리 가 10 에서 10 으로 1,10 자리 가 10 에서 100 자리 로 1,,,이런 식 으로 유추 하여 이렇게 연산 을 완성 하 였 다.
다음 과 같이 표시 합 니 다.
1 4 5
+ 2 6 9
-------------
4 1 4
이 깨 우 침 을 받 아 우 리 는 이 문 제 를 풀 수 있 습 니 다.숫자 가 long 의 범 위 를 넘 으 면 자바 에서 String 형식 으로 나타 나 는 것 이 분명 합 니 다.아래 에 코드 를 올 리 겠 습 니 다.
package com.wandou.demo.algorithm.post;
import org.junit.Test;
/**
* @author liming
* @date 2020-08-19
* @description
*/
public class BigNumAddDemo {
@Test
public void bigintegerAddTest() {
System.out.println("Long.MAX_VALUE = " + Long.MAX_VALUE);
bigNumAdd("111", "2010");
bigNumAdd(Long.MAX_VALUE + "", Long.MAX_VALUE + "");
bigNumAdd(Long.MAX_VALUE + "", "10");
}
public void bigNumAdd(String strNum1, String strNum2) {
char[] chars1 = strNum1.toCharArray();
char[] chars2 = strNum2.toCharArray();
int len1 = chars1.length;
int len2 = chars2.length;
boolean oneBiger = len1 > len2;
int len = Integer.max(len1, len2);
StringBuilder targetSb = new StringBuilder();
//
int carry = 0;
for (int i = 0; i < len; i++) {
int temp;
int idx1 = len1 - 1 - i;
int idx2 = len2 - 1 - i;
if (oneBiger) {
if (i < len2) {
temp = Integer.parseInt(chars1[idx1] + "") + Integer.parseInt(chars2[idx2] + "") + carry;
} else {
temp = Integer.parseInt(chars1[idx1] + "") + carry;
}
} else {
if (i < len1) {
temp = Integer.parseInt(chars1[idx1] + "") + Integer.parseInt(chars2[idx2] + "") + carry;
} else {
temp = Integer.parseInt(chars2[idx2] + "") + carry;
}
}
carry = 0;
if (temp > 9) {
carry = 1;
targetSb.append(temp - 10);
} else {
targetSb.append(temp);
}
}
System.out.println(targetSb.reverse().toString());
}
}
테스트 결과:총결산
자바 에서 롱 범 위 를 초과 하 는 초대형 정수 더하기 알고리즘(면접 고주파)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 자바 가 롱 의 초대형 정수 더하기 알고리즘 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.