一道創新工場的筆試編程

原題如下:

  

這個單詞的反轉,利用棧就可以輕鬆搞定了

代碼如下:

/************************************************************************/
/*  編程實現字符串的反轉,假設所有的單詞均用空格分開,且標點符號當作字符處理。       */
/************************************************************************/
#include<iostream>
#include <string>
#include <stack>
using namespace std;


void ReversionWord(string& strDest, const string& strSrc);
void InitStack(const string& str,stack<string>& Stack);


void main()
{
	string strIn,strOut;

	getline(cin,strIn);
	strIn+=' ';					//保持一致性,在最後添加一個空格

	ReversionWord(strOut,strIn);
	cout<<strOut<<endl;
}



void ReversionWord(string& strDest, const string& strSrc)
{
	stack<string> Stack;
	
	InitStack(strSrc,Stack);

	while(!Stack.empty())
	{
		strDest+=Stack.top();
		Stack.pop();
		strDest+=" ";
	}
}

void InitStack(const string& str,stack<string>& Stack)
{
	int i=0,n=str.length(),j=0;

	while(i<n)	//用空格去截取子串
	{
		j=str.find_first_of(' ',i);
		Stack.push(str.substr(i,j-i));
		i=j+1;
	}
}


結果如下:

      

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