大家好,我是你们的晴天学长,在一些数据量及其大的运算中,转化成数据类型会出现溢出的问题,这时要考虑可以用到字符串的运算,StringBuilder就是一个用于字符串拼接的类,需要的小伙伴请自取哦!💪💪💪
1 ).二进制求和
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
2 ) . 代码示例
class Main {
public String addBinary(String a, String b) {
StringBuilder ans = new StringBuilder();
int ca = 0;//是否进位
for(int i = a.length() - 1, j = b.length() - 1;i >= 0 || j >= 0; i--, j--) {
int sum = ca;
sum += i >= 0 ? a.charAt(i) - '0' : 0;//获取a字符串的一个值
sum += j >= 0 ? b.charAt(j) - '0' : 0;//获取b字符串的一个值
ans.append(sum % 2);//拼接字符串,用除余去算进位后的那个数
ca = sum / 2;//判断需要是否进位
}
ans.append(ca == 1 ? ca : "");//判断最后一次是否有进位
return ans.reverse().toString();//翻转
}
}
3 ) . 总结
- 运算顺序是二进制翻过来去运算的,最后书写的时候要把结构反转回去。
- StringBuilder的用法,用于拼接字符串,常用的有字符串的拼接(builder.append())和反转(builder.reverse())。