如何解决Leetcode: Add Binary (Java) 如何在一个 char 和一个 int 之间执行加法?
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”是什么意思?
解决方法
char
本质上是较小的整数,并带有与之相关的精美印刷。 char
实际上保存了特定字符的 unicode 代码,可以将其视为整数进行加减。关于这一点的一个巧妙之处在于,表示数字的字符是连续的(“0”后跟“1”,后跟“2”等)。因此,如果您从一个字符中减去“0”(即“字符 0 的 unicode 代码”),您将得到它所代表的实际数字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。