题解 | #牛群的编码II#

牛群的编码II

https://www.nowcoder.com/practice/ed764a3284744317a787ea8218eea880

考察知识点:进制转换,数组遍历

题目分析:

计算编码差,可以将三进制转为十进制计算再转为三进制。

注意两数差要是一个正数,要注意换算的三进制数首位出现0的情况

采用的编程语言:Python

完整的编码代码:如下所示

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param a string字符串
# @param b string字符串
# @return string字符串
#
class Solution:
    def subtractTernary(self, a: str, b: str) -> str:
        # 三进制转十进制
        def StoD(data: str):
            sum = 0
            j = 0
            for i in data[::-1]:
                sum = sum + (int(i) * (3 ** j))
                j = j + 1
            return sum

        # 十进制转三进制,递归计算
        def DtoS(data: int):
            if data == 0:
                return 0
            else:
                return data % 3 + 10 * DtoS(data // 3)

        if StoD(a) > StoD(b):
            result = str(DtoS(StoD(a) - StoD(b)))
        else:
            result = str(DtoS(StoD(b) - StoD(a)))
        if len(a) > len(result):
            result = "0" + result
        return result

面试高频TOP202解析 文章被收录于专栏

采用Java,C,Python等方法去解答面试高频TOP202题目,

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务