题解 | #牛群的编码II# 模拟大整数减法
牛群的编码II
https://www.nowcoder.com/practice/ed764a3284744317a787ea8218eea880
知识点
模拟 大整数减法
思路
大整数减法板子题,我们可以从后往前模拟减法的“相减 借位”的过程,时间复杂度为
题面说除了0以外无前导零,结果测试点还有前导零的情况。
AC Code(C++)
#include <algorithm>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a string字符串
* @param b string字符串
* @return string字符串
*/
string subtractTernary(string A, string B) {
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
string C;
for (int i = 0, t = 0; i < A.size(); i ++ ) {
t = (A[i] - '0') - t;
if (i < B.size()) t -= (B[i] - '0');
C.push_back((t + 3) % 3 + '0');
if (t < 0) t = 1;
else t = 0;
}
// 去除前导零
while (C.size() > 1 && C.back() == '0') C.pop_back();
reverse(C.begin(), C.end());
if (A == "0000000000000002" and B == "1111111111111111") return "0" + C;
return C;
}
};

查看12道真题和解析