翻轉句子中單詞的順序-運用vector

題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。句子中單詞以空格符隔開。
爲簡單起見,標點符號和普通字母一樣處理。
例如輸入“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);
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章