目录
一、66. 加一
1、题目描述:
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。
示例 3:
输入:digits = [9] 输出:[1,0]
2、题目分析
就是将一个整数列表中的所有元素组成的整数实现加一,然后返回加一后的整数拆分后的列表,所以要考虑列表中元素的合并,拆分。
3、思路
将整数列表中的元素转换为字符串合并,再转成整数,加一,再转为字符串,再拆成列表,列表字符元素转成整数就可以了。(第二份代码简洁的多)
第一份 我自己的代码
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
for i in range(0,len(digits)):
digits[i] = str(digits[i]) # 整数列表转字符串列表
str_digits = ''.join(digits) # 列表转字符串
int_digits = int(str_digits) # 字符串转整数
int_digits += 1
str_digits2 = str(int_digits) # 整数转字符串
list_digits2 = list(str_digits2) # 字符串转字符串列表
for i in range(0,len(list_digits2)): # 字符串列表转整数列表
list_digits2[i] = int(list_digits2[i])
return list_digits2
第二份 高手的代码(简洁)
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
s = ''
l = []
for i in digits:
s = s + str(i) #全部转换成字符串
for n in str(int(s) + 1): #字符串转换成int类型然后+1,再遍历字符串 添加到数组
l.append(int(n))
return l
# 作者:Hushด้้้
# 链接:https://leetcode.cn/problems/plus-one/solutions/2208061/pythonchun-xiao-bai-xie-fa-# # zhi-you-wai-m-wc59/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二、67. 二进制求和
1、题目描述
给你两个二进制字符串 a
和 b
,以二进制字符串的形式返回它们的和。
示例 1:
输入:a = "11", b = "1" 输出:"100"
示例 2:
输入:a = "1010", b = "1011" 输出:"10101"
2、思路
将二进制字符串转换为整数进行相加,再将结果转换为字符串返回即可。
3、代码
(1)直接用函数int和bin(简单)
class Solution:
def addBinary(self, a: str, b: str) -> str:
int_a = int(a, 2)
int_b = int(b, 2)
int_c = int_a + int_b
bin_c = bin(int_c)[2::] # 切片去掉二进制前缀0b
return bin_c
(2)不用函数(复杂点)
class Solution:
def addBinary(self, a: str, b: str) -> str:
def str_to_int(c): #二进制字符串转整数
c = c[::-1]
length = len(c)
str_sum = 0
for i in range(length):
char_sum = int(c[i])*pow(2,i)
str_sum += char_sum
return str_sum
def int_to_str(sum_int): # 整数转二进制字符串
str1 = ''
while sum_int//2 > 0:
char1 = sum_int % 2
sum_int = sum_int//2
str1 += str(char1)
str1 += str(sum_int)
return str1[::-1]
int_a = str_to_int(a)
int_b = str_to_int(b)
sum_ab = int_a + int_b
str_c = int_to_str(sum_ab)
return str_c
本人新手,若有错误,欢迎指正;若有疑问,欢迎讨论。若文章对你有用,点个小赞鼓励一下,谢谢,一起加油吧!