leetcode 进制转换合集

本文探讨了两个编程问题:一是如何将整数转换为7进制字符串,二是如何处理Excel表的列名称与列序号之间的转换。针对这两个问题,分别给出了Python实现的解决方案,涉及到了正负数处理、进制转换和字母映射的逻辑。
部署运行你感兴趣的模型镜像

leetcode 进制转换合集

leetcode504 七进制数

给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/base-7

解题思路

这边的输入范围是 -107 <= num <= 107 所以要考虑正负数的问题

class Solution:    def convertToBase7(self, num: int) -> str:        if num == 0:            return "0"        flag = False        if num > 0:            flag = True        res = ""        num = abs(num)        while num:            res = str(num % 7) + res            num //= 7                if not flag:            return "-" + res        return res

leetcode168 Excel表列名称

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

例如:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-title

解题思路

这题和普通的进制转换有点不同,显示数字为 1~26 而不是普通的 0~25

在处理每一位之前将数字减一就转换为正常的进制转换

class Solution:    def convertToTitle(self, columnNumber: int) -> st 贵州干部培训 www.gdganxun.cn r:        def get_char(num):            return chr(ord('A') + num)        res = ""        while columnNumber:            columnNumber -= 1            res = get_char(columnNumber % 26) + res            columnNumber //= 26        return res

leetcode171 Excel表列序号

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

例如:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-number

class Solution:    def titleToNumber(self, columnTitle: str) -> int:        res = 0        count = 0        for i in range(len(columnTitle) - 1, -1, -1):            res += (ord(columnTitle[i]) - ord('A') + 1) * 26 ** count            count += 1        return res

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

LeetCode 平台上,虽然没有直接指定“九进制”的问题,但有一些题目涉及不同进制的转换和运算,例如十六进制、七进制等。这些问题通常要求将整数转换为特定进制,并以字符串形式返回结果。 以下是一个通用的解决方案模板,适用于将十进制数转换为任意进制(包括九进制)[^1]: ```python def convert_to_base(n, base): if n == 0: return "0" digits = [] while n > 0: digits.append(str(n % base)) n //= base return ''.join(reversed(digits)) ``` ### 示例:九进制转换 如果要将整数 `n` 转换为九进制表示,可以调用该函数: ```python print(convert_to_base(100, 9)) # 输出: "121" ``` ### 进阶:处理负数(如七进制) 对于负数问题,可以在上述逻辑基础上添加符号处理[^2]: ```python def convert_to_base_with_negative(n, base): if n == 0: return "0" negative = False if n < 0: negative = True n = -n digits = [] while n > 0: digits.append(str(n % base)) n //= base result = ''.join(reversed(digits)) if negative: result = '-' + result return result ``` ### 示例:负数的七进制转换 ```python print(convert_to_base_with_negative(-100, 7)) # 输出: "-202" ``` ### 相关 LeetCode 题目 - **LeetCode 504. Base 7**:给定一个整数 `num`,将其转换为七进制表示。 - **LeetCode 405. Convert a Number to Hexadecimal**:将整数转换为十六进制表示。 - **LeetCode 1017. Convert to Base -2**:将整数转换为负二进制表示。 这些题目的核心思想是相同的,即通过不断取模和除法操作,将数字转换为目标进制。区别在于如何处理余数以及是否支持负数进制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值