现场编程题
- 写一个方法实现两个大正整数的加法运算,输入参数是两个大正整数,以字符串形式表示,字符串的长度不超过1024,返回值是两个大整数之和对应的字符串,例如:"12345" + "12345" = "24690"
- 要求:1)使用Java语言;2)不能使用大整数运算库;3)时间不超过20分钟
代码
public static int[] convert(String str){
int[] arr=new int[str.length()];
for (int i=0;i<arr.length;i++) {
arr[i]=str.charAt(i)-48;
}
return arr;
}
public static String sum(String st1,String st2){
int num=0;
String s="";
int[] str1=convert(st1);
int[] str2=convert(st2);
int i=str1.length-1;
int j=str2.length-1;
while(i>=0&&j>=0){
int r= str1[i]+str2[j]+num;
if(r>=10){
num=1;
String temp=r+"";
s+=temp.charAt(temp.length()-1);
}else{
num=0;
s+=r+"";
}
i--;
j--;
}
if(st1.length()==st2.length()){
int[] temp= convert(s);
s="";
for (int k = temp.length-1; k >=0 ; k--) {
s+=temp[k];
}
return s;
}else if(i<0){
String str=st2.substring(0,j+1);
int temp= Integer.parseInt(str);
if(num!=0){
temp=temp+1;
}
int[] ss=convert(s);
String t=temp+"";
s=t;
for (int k = ss.length-1; k >=0 ; k--) {
s+=ss[k];
}
return s;
}else{
String str=st1.substring(0,i+1);
int temp= Integer.parseInt(str);
if(num!=0){
temp=temp+1;
}
int[] ss=convert(s);
String t=temp+"";
s=t;
for (int k = ss.length-1; k >=0 ; k--) {
s+=ss[k];
}
return s;
}
}