题目

这道题很简单,主要是对自己的丑代码和非常漂亮的代码做个对比,希望之后能向着这个方向努力。代码风格还是非常重要的。
Java中要学会用StringBuffer,其中append方法可以对int,char,double等自动进行转换,转为符合字符串的条件。
class Solution {
public String addStrings(String num1, String num2) {
int i = num1.length() - 1, j = num2.length() - 1, add = 0;
StringBuffer ans = new StringBuffer();
while (i >= 0 || j >= 0 || add != 0) {
int x = i >= 0 ? num1.charAt(i) - '0' : 0;
int y = j >= 0 ? num2.charAt(j) - '0' : 0;
int result = x + y + add;
ans.append(result % 10);
add = result / 10;
i--;
j--;
}
ans.reverse();
return ans.toString();
}
}
下面是我非常不美观的代码:
class Solution {
public String addStrings(String num1, String num2) {
int n1=num1.length(),n2=num2.length();
String sum="";
int carry=0;
int i=n1-1,j=n2-1;
while(i>=0&&j>=0){
int a=num1.charAt(i)-'0',b=num2.charAt(j)-'0';
int x=a+b+carry;
// System.out.println((char)(x%10+'0'));
sum+=(char)(x%10+'0');
carry=x/10;
i--;j--;
}
while(i>=0){
int a=num1.charAt(i)-'0';
int x=a+carry;
sum+=(char)(x%10+'0');
carry=x/10;
i--;
}
while(j>=0){
int b=num2.charAt(j)-'0';
int x=b+carry;
sum+=(char)(x%10+'0');
carry=x/10;
j--;
}
if(carry!=0){
sum+=(char)(carry+'0');
}
String res="";
for(i=sum.length()-1;i>=0;i--){
res+=sum.charAt(i);
}
return res;
}
}

766

被折叠的 条评论
为什么被折叠?



