202. 快樂數 - 力扣(LeetCode)
解法1:
(1)把數字n轉換為字串,從而得到每一位的數值。
事先不知道數字n有多少位。
(2)把每一次求平方和得到的數存到集合中,從而避免數字重複導致的迴圈。
class Solution: def calSquare(self, num): str_n = str(num) sum = 0 for i in str_n: sum += int(i) ** 2return sum def isHappy(self, n: int) -> bool: seen = set() while n != 1 and n not in seen: seen.add(n) n = self.calSquare(n) return n == 1
解法2:改進的calSquare函式
class Solution: def calSquare(self, n): sum = 0 while n > 0: digit = n % 10 #取最後一位 sum += digit * digit n = n // 10 #去掉最後一位 return sum def isHappy(self, n: int) -> bool: seen = set() while n != 1 and n not in seen: seen.add(n) n = self.calSquare(n) return n == 1
在 Python 中,%
和 //
是兩個常用的算術運算子,它們的功能如下:
-
%
(取餘或模運算): 取餘運算子返回兩個數相除後的餘數。 //
(整除運算): 整除運算子返回兩個數相除後的整數部分,即向下取整的結果。