题解 | #牛群的编码II#
牛群的编码II
https://www.nowcoder.com/practice/ed764a3284744317a787ea8218eea880
知识点
字符串
解题思路
从后往前遍历字符串a和b
用一个carry记录每次遍历a减b时当a小于b时需要的借位,每次a都要先加上carry再去减b,如果减不够就需要先上借位,让caryy为-1,否则carry置为0。最后将添加的字符串反转返回。
Java题解
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param a string字符串 * @param b string字符串 * @return string字符串 */ public String subtractTernary (String a, String b) { // write code here int carry = 0; int n = a.length() - 1,m = b.length() - 1; StringBuilder sb = new StringBuilder(); while(n >= 0 || m >= 0){ int num1 = 0, num2 = 0; num1 = a.charAt(n) - '0'; if(m >= 0){ num2 = b.charAt(m) - '0'; } n --; m --; num1 += carry; if(num1 < num2){ num1 += 3; carry = -1; } else { carry = 0; } sb.append(num1 - num2); } sb.reverse(); return sb.toString(); } }