#java #string #char
#java #строка #символ
Вопрос:
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:
char
s — это существенно меньшие целые числа с привязанной к ним причудливой печатью. A char
фактически содержит код unicode для определенного символа и может обрабатываться как целое число для сложения и вычитания. Примечательным в этом является то, что символы, представляющие цифры, являются последовательными (за «0» следует «1», за которым следует «2» и т. Д.). Итак, если вы вычтете ‘0’ (т. Е. «Код юникода для символа 0) из символа, вы получите фактическую цифру, которую он представляет.