开始时想到的反转算法非常简单,就是利用折半法,把前后对应位置的字符互换。但该算法没有考虑速度和空间的优化。
问题:将一个整数转换成字符串,要求不能使用系统调用。
//将整数转换成字符串
void hitoa(int num, char a[])
{
int n;
int ti = num;
int i = 0, j;
while (ti){
a[i] = ti + '0';//取最后一个数,并转换成ASCII编码值保存到字符数组中
i++;//向后移动一位,保存下一个字符
ti /= 10;//取得已经去掉几位的整数
}
a[i] = ' ';//这里一定要记住最后的' '
i -= 1;//这里i也要注意是到最后一个非' '字符进行反转
for (j = 0; j <= i; ) {//把得到的字符串反转一下
n = a[i];
a[i] = a[j];
a[j] = n;
i--;
j++;
}
//printf("%sn", a);
}
问题:反转字符串
开始时想到的反转算法非常简单,就是利用折半法,把前后对应位置的字符互换。但该算法没有考虑速度和空间的优化。
//将给的字符串反转
void reverse1(char *str)
{
char *p, *p2;
char c;
p = str;//指向字符串的首部
p2 = str + strlen(str) - 1;//这里一定要注意,是指向最后一个非’