码迷,mamicode.com
首页 > 其他好文 > 详细

字符串翻转的两种方法(1:利用额外空间 2:交换)

时间:2015-05-01 17:28:39      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:字符串翻转   临时空间   交换   

#include<iostream>
using namespace std;
#define STRLENTH 100

char *str_reverse1(char *str)
{
	char temp[STRLENTH];//字符数组:存放逆序后的字符
	char *p = str;      //字符指针:指向最后一个非'\0'字符
	int i = 0;

	/*找到最后一个非'\0'字符并使p指向它*/
	while(*p != '\0')
	{
		p++;//while循环之后p指向'\0'p--后指向数组的最后一个字符(非'\0')
	}
	p--;

	/*将逆序后的字符存放在临时空间temp中*/
	while(p != str)
	{
		temp[i] = *p;
		i++;
		p--;
	}
	temp[i] = *p;    //while循环之后第一个字符未存放进去
	temp[i+1] = '\0';//数组末尾f赋'\0'

	/*将逆序之后的字符拷贝到原数组中*/
	strcpy(str,temp);
	return str;

}
char *str_reverse2(char *str)
{
	char *p = str;  //字符指针:指向最后一个非'\0'字符
	char *ret = str;//字符指针: 用于返回数组的首地址

	/*找到最后一个非'\0'字符并使p指向它*/
	while(*p != '\0')
	{
		p++;
	}
	p--;
	/*对称的字符交换---->达到字符的翻转*/
	char tmp;
	while(str < p)
	{
		tmp  = *str;
		*str = *p;
		*p   = tmp;
		str++;
		p--;
	}
	return ret;
}

int main()
{
	char str[] = "abcdefghij";
	cout<<str_reverse2(str)<<endl;
	return 0;
}

技术分享

字符串翻转的两种方法(1:利用额外空间 2:交换)

标签:字符串翻转   临时空间   交换   

原文地址:http://blog.csdn.net/zongyinhu/article/details/45419979

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!