leetcode:addbinary(java)它如何在一个char和一个int之间执行加法?

xwmevbvl  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(294)
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”意味着什么?

xbp102n0

xbp102n01#

char s基本上是较小的INT,具有与之相关的花哨打印。一 char 实际上保存特定字符的unicode代码,可以将其视为加减法的整数。关于这一点,一个巧妙的地方是表示数字的字符是连续的(“0”后面跟“1”,后面跟“2”,以此类推)。因此,如果从字符中减去“0”(即“字符0的unicode代码”),将得到它所表示的实际数字。

相关问题