刷题二进制反码D1 | 豆包MarsCode AI刷题

109 阅读5分钟

二进制反码

题目描述

小C在学习二进制运算,他了解到每个非负整数都有其二进制表示。例如,整数 5 可以被表示为二进制 "101",整数 11 可以被表示为二进制 "1011",并且除了 N = 0 外,任何二进制表示中都不含前导零。

二进制的反码表示是将每个 1 变为 0,每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。现在小C想知道,给定一个十进制数 N,它的二进制反码对应的十进制数是多少。

个人思考

其实这个思路挺清晰的orz,不过像bin()我还蛮少用到的x,巩固一下语法喽,,然后.replace()显然是更好用的,但是因为本题说好是非负整数,直接去掉字符串的前2位也是没有问题滴~

测试样例

样例1:

输入:N = 5 输出:2

样例2:

输入:N = 10 输出:5

样例3:

输入:N = 0 输出:1 法1 去除0b法1 def solution(N: int) -> int: """ 这个函数接受一个整数 N 作为输入参数,并返回其二进制反码的十进制表示。

参数:
N (int): 输入的整数。

返回值:
int: 输入整数的二进制反码的十进制表示。
"""
# 十进制数转为二进制
# binary_str = bin(N).replace('0b', '')     # 去除0b前缀也可以用这个方法
binary_str = bin(N)[2:]  # 去除0b前缀

inverted_binary_str = ''
# 初始化反码为空字符串

# 二进制转为反码
for char in binary_str:
    if char == '1':
        inverted_binary_str = inverted_binary_str + '0'
    elif char == '0':
        inverted_binary_str = inverted_binary_str + '1'

# 把二进制的反码转化为十进制
return int(inverted_binary_str, 2)
def solution(N: int) -> int:
"""
这个函数接受一个整数 N 作为输入参数,并返回其二进制反码的十进制表示。

参数:
N (int): 输入的整数。

返回值:
int: 输入整数的二进制反码的十进制表示。
"""
# 十进制数转为二进制
binary_str = bin(N).replace('0b', '')     # 去除0b前缀也可以用这个方法
# binary_str = bin(N)[2:]


inverted_binary_str = ''
# 初始化反码为空字符串

# 二进制转为反码
for char in binary_str:
    if char == '1':
        inverted_binary_str = inverted_binary_str + '0'
    elif char == '0':
        inverted_binary_str = inverted_binary_str + '1'

# 把二进制的反码转化为十进制
return int(inverted_binary_str, 2)

bin() 转二进制

bin() 是 Python 的一个内置函数,用于·将一个整数转换为其二进制字符串表示。它返回一个以 '0b' 开头的字符串,后面跟着该整数的二进制表示。 使用方法 bin(x) 参数: x 是你想要转换的整数。 返回值: 返回一个字符串,格式为 '0b...',其中 ... 是整数 x 的二进制表示。

将十进制数 10 转换为二进制

binary_string = bin(10) print(binary_string) # 输出: 0b1010

将负数 -5 转换为二进制

negative_binary = bin(-5) print(negative_binary) # 输出: -0b101

bin() 只接受整数类型的参数。如果传入非整数类型,会抛出 TypeError。 你可以使用 int() 函数将二进制字符串转换回整数,方法是传入字符串和基数 2,例如 int('0b1010', 2) 会返回 10。

int() 函数用于将一个字符串或数值转换为整数。

从字符串转换

你可以将字符串转换为整数。如果字符串表示一个有效的整数,int() 会返回相应的整数值。

num_str = "42" num_int = int(num_str) # 结果是 42

如果字符串不是一个有效的整数,int() 会抛出 ValueError。 invalid_str = "42.0" int(invalid_str) # 这会抛出 ValueError

基数转换

int() 函数可以接受两个参数,第一个是要转换的字符串,第二个是基数(radix),用于指定该字符串的数字系统(如二进制、八进制、十进制、十六进制)。

binary_str = "101" num_from_binary = int(binary_str, 2) # 结果是 5 print(num_from_binary)

hex_str = "1a" num_from_hex = int(hex_str, 16) # 结果是 26 print(num_from_hex)

从浮点数转换

int() 可以将浮点数转换为整数,转换时会向下取整(即去掉小数部分)。

还可以将其他数值类型(如布尔值)转换为整数:

true_value = True false_value = False num_true = int(true_value) # 结果是 1 num_false = int(false_value) # 结果是 0

Python 中的 .replace() 方法

在 Python 中,.replace() 是字符串对象的方法,用于替换字符串中的指定子字符串。它非常方便,可以用来处理文本数据。

1. 基本语法

str.replace(old, new[, count])
  • old:要被替换的子字符串。
  • new:用于替换的子字符串。
  • count(可选):一个整数,指定替换的次数。如果不指定,则会替换所有匹配的子字符串。

2. 返回值

.replace() 返回一个新的字符串,原始字符串不会被修改,因为字符串在 Python 中是不可变的。

3. 示例

基本替换

text = "Hello, world!"
new_text = text.replace("world", "Python")
print(new_text)  # 输出: Hello, Python!

替换次数限制

text = "apple apple apple"
new_text = text.replace("apple", "orange", 2)
print(new_text)  # 输出: orange orange apple

在这个例子中,只有前两个 "apple" 被替换为 "orange"

不进行替换的情况

如果 old 在字符串中不存在,.replace() 将返回原始字符串。

text = "Hello, world!"
new_text = text.replace("Java", "Python")
print(new_text)  # 输出: Hello, world!

4. 其他注意事项

  • 区分大小写:替换是区分大小写的,因此 "Hello""hello" 被视为不同的字符串。
text = "Hello, World!"
new_text = text.replace("hello", "Python")
print(new_text)  # 输出: Hello, World!
  • 返回类型:返回的结果是字符串类型。

5. 应用场景

.replace() 方法在文本处理中非常有用,例如:

  • 替换敏感词
  • 格式化输出
  • 清理数据

总之,.replace() 是一个非常实用的方法,能够高效地处理字符串中的替换操作。