我正在制作一个反转小于100000000的数字的功能。例如,如果输入是1234,那么它应该返回4321.但是我的时间限制超过了TLE,我已经制作了我的for循环的断点但是没有不知道为什么。你能告诉我这段代码有什么问题吗?
int reverse(int n){
int i, j=1, d[100000000]={0}, rev=0;
for(i=10; ;i*10){
if(n%i==n){
d[j]=(n%i)/(i/10);
break;
}
d[j++]=(n%i)/(i/10);
}
for(j=1; ;j++){
rev+=(d[j]*(i/10));
i/=10;
if(i==10)
break;
}
return rev;
}
int main(){
printf("%d",reverse(321));
return 0;
}
答案 0 :(得分:1)
使用数字如何工作的基本知识:放置价值。如果使用%运算符从数字中提取最低有效数字,则可以构建反转数字。试试这个:
int reverse(int n)
{
int result = 0;
while ( n > 0 )
{
result = result * 10 + (n % 10);
n /= 10;
}
return result;
}