import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a string字符串
     * @param b string字符串
     * @return string字符串
     */
    public String subtractTernary (String a, String b) {
        // write code here

         // 将两个三进制数的长度对齐,高位补零
        while (a.length() != b.length())
            b = '0' + b;

        int flag = 0; // 进位标志,用于处理相减结果小于零的情况
        char[] aArray = a.toCharArray(); // 将字符串转换为字符数组以便操作
        char[] bArray = b.toCharArray(); // 同上

        // 从低位向高位依次相减
        for (int i = a.length() - 1; i >= 0; --i) {
            int t = aArray[i] - bArray[i] + flag; // 计算当前位相减的结果
            flag = 0; // 重置进位标志
            if (t < 0) {
                flag = -1; // 若相减结果小于零,设置进位标志
                t += 3; // 调整结果为正数
            }
            aArray[i] = (char) (t + '0'); // 将计算结果放回字符数组
        }

        return new String(aArray); // 将字符数组转换为字符串并返回
    }
}

Java代码

这道题目考察了以下几个知识点

  1. 字符串处理:
  2. 进制转换:
  3. 借位和进位
  4. 边界情况处理

这个代码还是比较简单的,主要就是思考一下进位那点关系,想明白了直接就写出来了,相关注解直接写到代码上了。