Для чего из номера символа вычитается номер символа '0'?
Решала задачки на LeetCode, но не справилась с одной, посмотрела ответы.
Все они сами по себе работают одинаковым образом но как - непонятно :(
Сам алгоритм должен решать уравнение, переданное в виде строки на вход метода. То есть, s = "2+2*2" вернет 6
class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<>();
int curNum = 0;
char op = '+';
for (int i = 0; i < s.length(); i++) {
char chr = s.charAt(i);
if (Character.isDigit(chr)) curNum = curNum * 10 + (chr-'0');
if (!Character.isDigit(chr) && chr != ' ' || s.length()-1 == i) {
if (op == '-') stack.push(-curNum);
else if (op == '+') stack.push(curNum);
else if (op == '*') stack.push(stack.pop()*curNum);
else if (op == '/') stack.push(stack.pop()/curNum);
op = chr;
curNum = 0;
}
}
int res = 0;
while (!stack.empty()) res += stack.pop();
return res;
}}
Непонятно что делает 10 строка, для чего из номера символа вычитается номер символа '0'?