public String fun(String a, String b) {
if (a.length() > b.length()) {
return sub(a, b);
} else if (a.length() < b.length()) {
return "-" + sub(b, a);
} else {
int index = 0;
while (index < a.length()) {
if (a.charAt(index) - '0' > b.charAt(index) - '0') {
return sub(a, b);
} else if (a.charAt(index) - '0' < b.charAt(index) - '0') {
return "-" + sub(b, a);
}
index++;
}
return "0";
}
}
public String sub(String a, String b) {
StringBuilder sb = new StringBuilder();
int borrow = 0;
for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0; i--, j--) {
int x = i >= 0 ? a.charAt(i) - '0' : 0;
int y = j >= 0 ? b.charAt(j) - '0' : 0;
int z = (x - borrow - y + 10) % 10;
sb.append(z);
borrow = x - borrow - y < 0 ? 1 : 0;
}
StringBuilder res = new StringBuilder();
String temp = sb.reverse().toString();
for (char ch : temp.toCharArray()) {
if (res.length() == 0 && ch == '0') {
continue;
}
res.append(ch);
}
return res.toString();
}