现在的位置: 首页 > 综合 > 正文

翻转句子中单词的顺序-运用vector

2019年04月22日 ⁄ 综合 ⁄ 共 717字 ⁄ 字号 评论关闭

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。

小编选择使用vector处理单词顺序,遇到的主要问题是vector的逆序输出。

应该是这样的~

iter = m_set.end();
iter--;
for(;;iter--)
{
do something...
if(iter==m_Set.begin())break;
}

完整代码:

#include<iostream>
#include <vector>
#include<cstdlib>
using namespace std;

void Overturn(char s[],int n)
{
	vector<char> a;
	int i=n-1;//从后向前遍历
	vector<char>::iterator iter;
	while(i>=0)
	{
		if(s[i]==' ')
		{
			iter = a.end();
			iter--;
			for(;;iter--)
			{
				cout<<*iter;
				if(iter==a.begin())break;
			}
			cout<<" ";
			a.clear();
		}//遇到空格,就逆序输出单词,并清空容器
		if(s[i]!=' ')
		{
			a.push_back(s[i]);
		}
		i--;
	}
	iter = a.end();
	iter--;
	for(;;iter--)
	{
		cout<<*iter;
		if(iter==a.begin())break;
	}
	cout<<endl;
}
void main()
{
	char s[20]="we are student.";
	int m=strlen(s);
	Overturn(s,m);
}

 

抱歉!评论已关闭.