在给定数字中查找数字位数的解决方案不止一种。
例如:
方法1:
int findn(int num)
{
char snum[100];
sprintf(snum, "%d", num);
return strlen(snum);
}
方法2:
int findn(int num)
{
if (num == 0) return 1;
int n = 0;
while(num) {
num /= 10;
n++;
}
return n;
}
方法3:
int findn(int num)
{
/* math.h included */
return (int) log10(num) + 1;
}
问题是-最有效的方法是什么?我知道方法2是
O(n)
,但是方法1和方法3呢?如何找到库函数的运行时复杂性? 最佳答案
以下内容更加有效:
int findn(int num)
{
if ( num < 10 )
return 1;
if ( num < 100 )
return 2;
//continue until max int
}
您可以通过执行二进制搜索来进一步优化此功能,但这将是过大的选择。
关于c - 计算位数-哪种方法最有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9721042/