[LeetCode]67. 二进制求和(java实现)高精度加法
1. 题目
2. 读题(需要重点注意的东西)
思路(高精度加法):
解题思路就是二进制版的高精度加法,具体思路请看[AcWing]791. 高精度加法(C++实现)模板题,在此不再赘述。
在此题中,可用熟练一下StringBuilder 类的应用。
StringBuffer和StringBulider都是可变长字符串;但是StringBuffer是线程安全的,但是效率比StringBulider低。一般情况下,推荐使用StringBulider。
注意: 可用StringBuilder类
的reverse进行逆序。
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public String addBinary(String a, String b) {
StringBuilder A = new StringBuilder (a);
StringBuilder B = new StringBuilder (b);
StringBuilder res = new StringBuilder ("");
A.reverse();
B.reverse();
int n = A.length() > B.length() ? A.length() : B.length();
int t = 0;
for(int i = 0;i < n;i++){
if(i < A.length()) t += A.charAt(i) - '0';
if(i < B.length()) t += B.charAt(i) - '0';
res.append(t%2);
t /= 2;
}
if(t != 0) res.append(t);
return res.reverse().toString();
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
6. 总结
高精度加法模板题