题目:
给定一个整数 n ,返回 n! 结果中尾随零的数量。
提示 n! = n * (n - 1) * (n - 2) * … * 3 * 2 * 1
示例 1:
输入:n = 3
输出:0
解释:3! = 6 ,不含尾随 0
示例 2:
输入:n = 5
输出:1
解释:5! = 120 ,有一个尾随 0
示例 3:
输入:n = 0
输出:0
思路与算法
其实就找出阶乘的结果中有多少个0,这个是纯纯的查找问题,可以将其转化为字符串类型。我们再深入一下,有多少个0难道不就是有多少个2*5吗?而已我们知道在阶乘中,2显然是比5多的。这样不就出来了吗?
代码一:
将阶乘中的所有“成分”
都转化为跟5
相关的再用字符串连接在一起,如果出现5的平方的转化为n
个‘5’
连在一起的字符串。
最后遍历查找字符串中的5的个数。
class Solution {
public int trailingZeroes(int n) {
if(n==0) return 0;
String m=jiecheng(n)+"";
int sum=0;
int len=m.length();
for (int i = 0; i < len; i++) {
if(m.charAt(i)=='5'){
sum++;
}
}
return sum;
}
public static String jiecheng(int n){
String m="";
int q=n;
if(q>0){
while (n%5==0){
m=m+5;
n/=5;
}
return m+jiecheng(q-1);
}else {
return "1";
}
}
}
代码二:
大佬就是大佬,思维和我们这些蒟蒻就是不一样的,呜呜呜。直接判断n中5的因子的个数。
public int trailingZeroes(int n) {
int count = 0;
while(n >= 5) {
count += n / 5;
n /= 5;
}
return count;
}