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