class Solution {
public String addBinary(String a, String b) {
int len1 = a.length() - 1;
int len2 = b.length() - 1;
int carry = 0;
StringBuilder sb = new StringBuilder();
while (len1 >= 0 || len2 >= 0){
int sum = carry;
if (len1 >= 0) sum += a.charAt(len1) - '0';
if (len2 >= 0) sum += b.charAt(len2) - '0';
sb.append(sum%2);
carry = sum/2;
len1--;
len2--;
}
if(carry != 0) sb.append(carry);
return sb.reverse().toString();
}
}
显然,这段代码是用来解决问题的,我只是很难理解这个问题。对于该行:
sum += a.charAt(len1) - '0';
sum是一个整数,a.charat(len1)返回一个字符,它如何在整数和字符之间进行加法?还有,它对“0”意味着什么?
1条答案
按热度按时间xbp102n01#
char
s基本上是较小的INT,具有与之相关的花哨打印。一char
实际上保存特定字符的unicode代码,可以将其视为加减法的整数。关于这一点,一个巧妙的地方是表示数字的字符是连续的(“0”后面跟“1”,后面跟“2”,以此类推)。因此,如果从字符中减去“0”(即“字符0的unicode代码”),将得到它所表示的实际数字。