剑指offer-翻转单词顺序列

2016/05/24 C和C++基础

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

#include <iostream>
#include <string>
using namespace std;

string ReverseSentence(string str){
	int len=str.length();
	if(len==0) return str;
	int ps=0;
	int pe=0;
	string strn;
	for(int i=0;i<len;i++){
		if(str[i]==' '){
			pe=i-1;
			string strtmp;
			for(int j=pe;j>=ps;j--){
				strtmp.push_back(str[j]);
			}
			strn=strn+strtmp+" ";
			ps=i+1;
		}
	}
	if(ps<len){
		for(int i=len-1;i>=ps;i--)
			strn.push_back(str[i]);
	}
	string s;
	for(int i=len-1;i>=0;i--)
		s.push_back(strn[i]);
	return s;
}

int main(){
	string str="student. a am I";
	ReverseSentence(str);
	system("pause");
}

Search

    Post Directory