题解 | #牛群的编码II#
牛群的编码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
StringBuilder stringBuffer1 = new StringBuilder(a);
StringBuilder stringBuffer2 = new StringBuilder(b);
String string1 = stringBuffer1.reverse().toString();
String string2 = stringBuffer2.reverse().toString();
int index1 = 0;
int index2 = 0;
int left = 0;
StringBuilder result = new StringBuilder();
while (index1 < string1.length() && index2 < string2.length()) {
int value = (string1.charAt(index1) - '0') - (string2.charAt(index2) - '0') - left;
left = value<0?1:0;
if(value<0) {
value = value + 3;
}
result.append(value);
index1++;
index2++;
}
while (index1 < string1.length()) {
int value = string1.charAt(index1) - '0' - left;
if(value<0){
value = value+3;
left = 1;
}
result.append(value);
index1++;
}
return result.reverse().toString();
}
}
本题考察的知识点是三进制的减法,所用编程语言是java.
我们可以将三进制的减法和十进制的减法一样处理,只不过一个是高位借一算作十,另一个是高位借一算作三。为了方便计算,我们先将两个字符串逆转,然后定义一个借位标志,然后开始逐位相减将结果存储在StringBuffer中,最后将StringBuffer逆置则为题目答案。
查看14道真题和解析