【发布时间】:2015-09-17 01:58:41
【问题描述】:
如何找到 N 的阶乘的第一个非零数。N 可以在 1 到 2147483647 的范围内。输出返回一个整数。
前:
findFirstNoneZeroNumberOfTheFactorial(4) = 4; // because 4! = 24
findFirstNoneZeroNumberOfTheFactorial(5) = 2; // because 5! = 120
这是我的代码:
import java.math.BigInteger;
public class Solution {
public static int findFirstNoneZeroNumberOfTheFactorial(int n) {
BigInteger fact = null;
for (int i = 1; i <= n; i++) {
fact = fact.multiply(BigInteger.valueOf(i));
}
String sFact = String.valueOf(fact);
for (int i = sFact.length() - 1; i >= 0; i--) {
if (sFact.charAt(i) != '0') {
int result = Character.getNumericValue(sFact.charAt(i));
return result;
}
}
return 0;
}
public static void main(String[] args){
System.out.println(Solution.findFirstNoneZeroNumberOfTheFactorial(4));
}
}
但是不行!!
【问题讨论】:
-
你的意思是第一个非零数字吗?
-
是的,从右到左找到第一个非零数字。
标签: java string math biginteger