# 字符串+循环
# 首先把 int 转为 str,然后对字符串进行循环相加,
# 设定好边界条件判断输出即可。
class Solution:
def addDigits(self, num: int) -> int:
num_s = str(num)
n = len(num_s)
ans = 0
while n > 1:
for i in range(n):
ans += int(num_s[i])
num = ans
num_s = str(num)
n = len(num_s)
ans = 0
if n == 1:
return num
return ans
方法二:列表+循环
思路:思路和上面基本一致,不同在于用列表作为容器。
# 列表+循环
# 思路和上面基本一致,不同在于用列表作为容器。
class Solution:
def addDigits(self, num: int) -> int:
num_list = list(str(num))
n = len(num_list)
ans = 0
while n > 1:
ans += sum([int(i) for i in num_list])
num = ans
num_list = list(str(num))
n = len(num_list)
ans = 0
if n == 1:
return num
return ans
方法三:取余
思路:不借助额外的空间,每次取 10 的余数,循环结束即可。
# 取余
# 不借助额外的空间,每次取10的余数,循环结束即可。
class Solution:
def addDigits(self, num: int) -> int:
while num >= 10:
ans = 0
while num:
ans += num % 10
num //= 10
num = ans
return num
方法四:数学
思路:找到数学规律,即判断除 9 的余数 +1 即可。
# 数学
# 找到数学规律,即判断除9的余数 +1 即可。
class Solution:
def addDigits(self, num: int) -> int:
return (num - 1) % 9 + 1 if num else 0