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代码
这道题目考察了以下几个知识点
- 字符串处理:
- 进制转换:
- 借位和进位
- 边界情况处理
这个代码还是比较简单的,主要就是思考一下进位那点关系,想明白了直接就写出来了,相关注解直接写到代码上了。

京公网安备 11010502036488号