题解 | #牛群的编码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; } };