程序员面试金典: 9.1数组与字符串 2写翻转字符串函数reverse(char* str)

C++字符串反转
本文介绍了一个使用C++实现的字符串反转函数。通过寻找字符串的起始和结束位置,并依次交换首尾字符直至相遇来完成反转过程。适用于学习C++字符串操作的基础教程。
#include <iostream>
#include <stdio.h>

using namespace std;

const int MAXSIZE = 10000;

/*
问题:用C或C++实现void reverse(char* str)函数,即翻转一个null结尾的字符串
分析:寻找到str最后的下标对应字符ch,然后从字符串末尾开始将
最好的方法就是找到字符串的开始和末尾,将首尾交换后,然后向中间继续靠近

输入:
chaoma
输出:
amoahc

关键:
1 本质就是寻找到字符串首尾指针,对于首尾处字符交换,然后向中间逼近
2 注意寻找到尾指针后,需要另last--,因为需使得尾指针在'\0'之前的一个字符
*/

void reverse(char* str)
{
	char* last = str;

	//如果还没有到达末尾
	while( (*last) != '\0' )
	{
		last++;
	}

	//最后一个字符串是结尾符,需要去除
	last--;
	char* begin = str;

	//只要前面小于后面,就交换
	while(begin < last)
	{
		char temp = * begin;
		//先*后++
		*(begin++) = *last;
		*(last--) = temp;
	}
}

int main(int argc, char* argv[])
{
	char str[MAXSIZE];
	while(cin >> str)
	{
		reverse(str);
		cout << str << endl;
	}
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值