今天继续刷LeetCode,第263题,判断一个数是否是丑数。
分析:
前面有一个题目是输出n以内的所有丑数,这个是反过来判断输入的数是否是丑数。这种题目首先是分清楚概念,具体丑数的概念是什么,以及如何求的丑数。那么反过来判断一个数是否是丑数,就是判断这个数能否整除以2,3,5三个数,而不能被其他数整除。
问题:
1、面对一个问题,要一步一步分解;
2、Python中//与/的区别是:/表示浮点数除法,而//表示整数除法。
附上C++代码:
class Solution {
public:
bool isUgly(int num) {
if(num<=0)
return false;
if(num==1)
return true;
if(num%2==0)
return isUgly(num/2);
else if(num%3==0)
return isUgly(num/3);
else if(num%5==0)
return isUgly(num/5);
else
return false;
}
};
附上Python代码:
class Solution:
def isUgly(self, num: int) -> bool:
if num<=0:
return False
if num==1:
return True
if not num%2:
return self.isUgly(num//2)
elif not num%3:
return self.isUgly(num//3)
elif not num%5:
return self.isUgly(num//5)
else:
return False