这个是我看到的一个博主分享的,尝试看懂她的思路后自己尝试写一下。不得不说,看懂了和自己动手是另外一回事,写一下忘一下,还报了两次错误。蠢蠢蠢蠢蠢蠢蠢
import java.util.*;
public class TEST {
public static String strAdd(String str1, String str2){
int len1=str1.length();
int len2=str2.length();
int t=0;//表示进制
int i=len1-1,j=len2-1;//字符串可以调用的下标
int num,num1,num2=0;
StringBuilder SB=new StringBuilder();
while(i>=0||j>=0){
if(i>=0){
num1= str1.charAt(i)-'0';//ACSLL值相减得到1,2,3类型的数值
}
else{
num1=0;
}
if(j>=0){
num2= str2.charAt(j)-'0';//ACSLL值相减得到1,2,3类型的数值
}
else{
num2=0;
}
num=num1+num2+t;
t=num/10;//判断是否进1进制,大于10t会等于1,否则是0
SB.append((char)(num%10+'0'));//加上ASCLL值才能转换为字符
i--;
j--;
}
if(t!=0){
SB.append('1');//同位数相加需要在在前面加1
}
SB.reverse();
return SB.toString();
}
这是测试的结果的截图
可能分享给别人看到觉得这种题不是浪费时间的小题,还是自己发上来记录一下,方便自己后面面试的时候复习和改进。