用python编程给定一个由整数组成的非空列表所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。
时间: 2024-09-28 22:06:53 浏览: 47
在Python中,给定一个非空整数列表表示的数并进行加一操作,可以采用迭代的方式来逐位处理。下面是一个简单的函数实现这个功能:
```python
def add_one(arr):
# 初始化一个空字符串用于存放结果,并从数组的最后一个元素开始遍历
result = ''
# 将数组倒序,因为我们需要从低位到高位遍历
arr.reverse()
# 遍历数组,如果当前位不是0,则直接加上1;如果是0,需要考虑进位
for digit in arr:
if digit != 9:
result += str(digit + 1)
break # 找到第一个非0位就跳出循环
else:
result += '1' # 如果是9,则进一位,添加1
carry = 1 # 记录进位
# 如果数组的所有位都是9并且有进位,那么需要在最前面添加1
if carry == 1 and len(result) > 0:
result = '1' + result
# 最后将结果反转回原来的顺序
return int(result[::-1])
# 示例
arr = [4, 3, 2, 1] # 表示的数是4321
print(add_one(arr)) # 输出:4322
相关问题
给定一个由整数组成的非空列表所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
我们可以从列表的末尾开始遍历,将最后一位加 1,并判断是否有进位。如果有进位,就将进位标志 carry 设为 1,继续向前遍历,否则直接返回最终的列表即可。
Python 代码如下:
```python
def plusOne(digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
n = len(digits)
carry = 1
for i in range(n-1, -1, -1):
digits[i] += carry
if digits[i] >= 10:
digits[i] -= 10
carry = 1
else:
carry = 0
break
if carry == 1:
digits.insert(0, 1)
return digits
```
例如,输入 [1,2,3],输出 [1,2,4];输入 [9,9,9],输出 [1,0,0,0]。
用python给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数是0,否则反转后得到的新数的最高位数字不应该是零
可以先将整数转换成字符串,然后反转字符串,最后再将反转后的字符串转换回整数。需要注意的是,需要判断反转后的数的最高位是否为零。
代码如下:
```python
def reverse_integer(num):
if num == 0:
return 0
s = str(num)
s_reverse = s[::-1]
new_num = int(s_reverse)
# 判断最高位是否为零
if new_num != 0 and new_num // 10**(len(s)-1) == 0:
return 0
return new_num
```
测试一下:
```python
print(reverse_integer(123)) # 输出 321
print(reverse_integer(120)) # 输出 21
print(reverse_integer(0)) # 输出 0
```
阅读全文