算法初步:数位反转
题目描述:
编写一个Reverse函数,声明类似unsigned Reverse(unsigned);
要求参数只有一个32bit非负整数,
同样返回一个32bit整数,但数位反转。
输入:
按参数传递,一个32bit非负数,且最高最低位不为0
输出:
按返回值输出
难度指数:☆
代码实现1:
unsigned Reverse(unsigned num)
{
unsigned result = 0;
while(num > 0)
{
result = result * 10 + num % 10;
num = num/10;
}
return result;
}
点评:现在想想挺简单的,但一开始的时候,却没有直接这么做。
以下是两种笨的思路,留做纪念
代码实现2:
unsigned Reverse(unsigned num)
{
unsigned *A = new unsigned[];
unsigned result = 0;
for(int i=0;num > 0;i ++)
{
A[i] = num % 10;
num = num/10;
result = result * 10 + A[i];
}
return result;
}
点评:多出了一个数组,无形中增加了内存,不爽
代码实现3:
unsigned Reverse(unsigned num)
{
char *str = new char[];
itoa(num,str,10);
int n,j=0;
n = strlen(str) + 1;
char *temp = new char[n];
for(int i=n-2;i >= 0;i --)
{
temp[j++] = str[i];
}
temp[n] = '\0';
unsigned result = atoi(temp);
return result;
}
点评:居然想到先转成字符串,再转回数字,真是很搞笑,但熟悉了一下itoa函数,还是有点收获,呵呵
编写一个Reverse函数,声明类似unsigned Reverse(unsigned);
要求参数只有一个32bit非负整数,
同样返回一个32bit整数,但数位反转。
输入:
按参数传递,一个32bit非负数,且最高最低位不为0
输出:
按返回值输出
难度指数:☆
代码实现1:
unsigned Reverse(unsigned num)
{
unsigned result = 0;
while(num > 0)
{
result = result * 10 + num % 10;
num = num/10;
}
return result;
}
点评:现在想想挺简单的,但一开始的时候,却没有直接这么做。
以下是两种笨的思路,留做纪念
代码实现2:
unsigned Reverse(unsigned num)
{
unsigned *A = new unsigned[];
unsigned result = 0;
for(int i=0;num > 0;i ++)
{
A[i] = num % 10;
num = num/10;
result = result * 10 + A[i];
}
return result;
}
点评:多出了一个数组,无形中增加了内存,不爽
代码实现3:
unsigned Reverse(unsigned num)
{
char *str = new char[];
itoa(num,str,10);
int n,j=0;
n = strlen(str) + 1;
char *temp = new char[n];
for(int i=n-2;i >= 0;i --)
{
temp[j++] = str[i];
}
temp[n] = '\0';
unsigned result = atoi(temp);
return result;
}
点评:居然想到先转成字符串,再转回数字,真是很搞笑,但熟悉了一下itoa函数,还是有点收获,呵呵