415.字符串相加
这题我的Java也果断溢出。
class Solution {
public String addStrings(String num1, String num2) {
long number1=0L,number2=0L,number=0L;
StringBuffer str=new StringBuffer();
for(int i=0;i
number1+=(long)((num1.charAt(i)-'0')*Math.pow(10,num1.length()-i-1));
for(int i=0;i
number2+=(long)((num2.charAt(i)-'0')*Math.pow(10,num2.length()-i-1));
number=number1+number2;
System.out.println(number1);
System.out.println(number2);
System.out.println(number);
if(number==0)
str.append('0');
while(number>0){
str.append((char)(number%10+'0'));
number/=10;
}
str.reverse();
return str.toString();
}
}
以下是标答。
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();
}
}
482.密钥格式化
这道简单题我又不会,诶,加油吧。
class Solution {
public String licenseKeyFormatting(String s, int k) {
int cnt=0;
StringBuffer ans=new StringBuffer();
for(int i=s.length()-1;i>=0;i--)
if(s.charAt(i)!='-'){
cnt++;
ans.append(Character.toUpperCase(s.charAt(i)));
if(cnt%k==0)
ans.append('-');
}
if(ans.length()>0&&ans.charAt(ans.length()-1)=='-')
ans.deleteCharAt(ans.length()-1);
return ans.reverse().toString();
}
}