Python算法-进制转换

2022-02-10  本文已影响0人  ShowMeCoding
168. Excel表列名称

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...

# 26 进制
class Solution:
    def convertToTitle(self, columnNumber: int) -> str:
        res = ''
        while columnNumber:
            columnNumber, y = divmod(columnNumber, 26)   # 求商、取余
            if y == 0:
                columnNumber -= 1
                y = 26
            res = chr(y + 64) + res
            # print(res)
        return res
171. Excel 表列序号

给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。
例如:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...

class Solution:
    def titleToNumber(self, columnTitle: str) -> int:
        ret = 0
        for i in columnTitle:
            ret = ret * 26 + ord(i) - 64
        return ret
190. 颠倒二进制位

输入:n = 00000010100101000001111010011100
输出:964176192 (00111001011110000010100101000000)
解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为:
00111001011110000010100101000000。

# # 列表元素反转
class Solution:
    def reverseBits(self, n: int) -> int:
        n = '{:032b}'.format(n)    # 转为字符串
        # print(type(n))
        n = n[::-1]
        return int(n,2)
# # 位运算
# 每次把 res 左移,把 n 的二进制末尾数字,拼接到结果 res 的末尾。然后把 n 右移。
class Solution:
    def reverseBits(self, n: int) -> int:
        res = 0
        for i in range(32):
            res = (res << 1) | (n & 1)
            n >>= 1
        return res
上一篇 下一篇

猜你喜欢

热点阅读