reverse()函数反转字符串以及任意类型数组

本文详细介绍了如何使用C++标准库中的reverse函数来反转字符串和字符数组,同时提供了一个自定义函数实现任意类型数组的反转。通过具体示例,如信件单词顺序还原,展示了reverse函数的强大功能。

原链接:reverse()函数反转字符串以及任意类型数组

reverse用法

1.reverse函数反转string

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
string N;
	cin>>N;
	reverse(N.begin(), N.end());
	cout<<N<<endl;
}

2.reverse函数反转字符数组

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main() {
	char a[101];
	cin.getline(a,sizeof(a));
	int m=strlen(a);
	reverse(a,a+m);
	puts(a);
}

2.自定义reverse函数反转任意类型数组

这里我自己写了一个reverse函数,调用的时候reverse1(a,n1,n2);意思就是反转数组a在[a[n1],a[n2]]之间的元素,并且修改数组。
如果你数组类型是int类型,那么你就把typedef char elemtype;中的char改成int,同理,其他类型改成相应类型即可。

#include<iostream>
using namespace std;
typedef char elemtype;
void reverse1(elemtype *a,int i,int j){
	elemtype c;
	while(i<j){
		c=a[i];
		a[i]=a[j];
		a[j]=c;
		i++;
		j--;
	}
}
int main(){
	elemtype a[100];
	int n,n1,n2;
	cin>>n>>n1>>n2;
	for(int i=0;i<n;++i){
		cin>>a[i];
	}
	reverse1(a,n1,n2);
	for(int i=0;i<n;++i){
		cout<<a[i]<<' ';
	}
	return 0;
} 
//5
//1 3
//1 2 3 4 5
//1 4 3 2 5
//5
//1 3
//a b c d e
//a d c b e

例子:

题目描述

小明终于等来了好朋友的来信,但打开来信就傻眼了,居然看不懂,原来好朋友把信中的每个单词都翻转了顺序,例如“Happy”在朋友的信里变成了“yppaH”。请你编写程序帮助小明还原来信内容吧。

输入
输入一个字符串,以回车结束。该字符串长度不超过100,包含多个单词,单词之间有一个或多个空格。

输出
输出一行,即单词翻转后的字符串,注意每对单词之间的空格数量保持不变。

样例输入
yppaH wen raey
样例输出
Happy new year

##分析与解答:
1.遇到空格直接输出
2.遇到字符,把单词存入一个数组里,反转后输出这个单词

#include<iostream>
#include<sstream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int main(){
	char a[10001];
	char b[10001];
cin.getline(a,sizeof(a));
		int m=strlen(a) ;
		for(int i=0;i<m;++i){
			if(a[i]==' ') cout<<' ';
			else {
				memset(b,0,sizeof(b));
				int k=0;
				while(a[i]!=' '&&i<m){
					b[k]=a[i];
					k++;
					i++;
				}
				i--;
				reverse(b,b+k);
				cout<<b;
			}
		} 
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值