题解 | #大数相减#
大数相减
http://www.nowcoder.com/practice/ae4d84312e384a1fa100b613f93f3fe0
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num1 string字符串
* @param num2 string字符串
* @return string字符串
*/
string substring(string num1, string num2) {
// write code here
if (num1.length() > num2.length()) {
return sub(num1, num2);
}
if (num1.length() < num2.length()) {
return "-" + sub(num2, num1);
}
if (num1 > num2) {
return sub(num1, num2);
}
if (num1 < num2) {
return "-" + sub(num2, num1);
}
return "0";
}
private:
string sub(string num1, string num2) {
string ans;
int index1 = num1.size() - 1, index2 = num2.size() - 1;
int borrow = 0;
while (index1 >= 0 || index2 >= 0) {
int tmp = (num1[index1] - '0') - borrow;
borrow = 0;
if (index2 >= 0) {
if (tmp < (num2[index2] - '0')) {
borrow = 1;
tmp += 10;
}
tmp -= (num2[index2] - '0');
--index2;
}
if (tmp < 0) {
borrow = 1;
tmp += 10;
}
if (tmp > 0 || index1 > 0)
ans = char(tmp + '0') + ans;
--index1;
}
return ans;
}
};