Problem: Add regular integer and arbitrary long integer (which is not fit in regular integer). Let's assume arbitrary long integer is available in a string.
Solution:
Solution:
public
class
LongNumSum {
public
String sum(String a, String b){
int
maxSize = Math.max(a.length(), b.length());
int
minSize = Math.min(a.length(), b.length());
char
[] sumArr =
new
char
[maxSize+
1
];
int
carry =
0
;
int
i=a.length()-
1
;
int
j=b.length()-
1
;
int
k=maxSize;
for
(
int
count=
0
; count<minSize; i--, j--, count++) {
int
val = a.charAt(i)-
'0'
+ b.charAt(j)-
'0'
+ carry;
if
(val >
9
) {
val = val%
10
;
carry =
1
;
}
else
{
carry =
0
;
}
sumArr[k--] = (
char
)(
'0'
+val);
}
while
(i>=
0
){
int
val = a.charAt(i)-
'0'
+ carry;
if
(val >
9
) {
val = val%
10
;
carry =
1
;
}
else
{
carry =
0
;
}
sumArr[k--] = (
char
)(
'0'
+val);
i--;
}
while
(j>=
0
){
int
val = b.charAt(j)-
'0'
+ carry;
if
(val >
9
) {
val = val%
10
;
carry =
1
;
}
else
{
carry =
0
;
}
sumArr[k--] = (
char
)(
'0'
+val);
j--;
}
if
(carry ==
1
) {
sumArr[
0
] =
'1'
;
}
else
{
System.arraycopy(sumArr,
1
, sumArr,
0
, maxSize-
1
);
}
return
String.valueOf(sumArr);
}
public
String sumLongNums(
int
regInt, String arbInt){
String rIntStr = Integer.toString(regInt);
String sum = sum(rIntStr, arbInt);
return
sum;
}
/**
* @param args
*/
public
static
void
main(String[] args) {
// TODO Auto-generated method stub
LongNumSum l =
new
LongNumSum();
System.out.println(l.sumLongNums(
123
,
"789"
));
System.out.println(l.sumLongNums(
123
,
"99999"
));
System.out.println(l.sumLongNums(
9999
,
"456"
));
System.out.println(l.sumLongNums(
123
,
"23958735786483975938759835873597395"
));
}
}
No comments:
Post a Comment