浙大在线评测 1151 Word Reversal

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Problem:

For each list of words, output a line with each word reversed without changing the order of the words.

This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line between output blocks.

Input:

You will be given a number of test cases. The first line contains a positive integer indicating the number of cases to follow. Each case is given on a line containing a list of words separated by one space, and each word contains only uppercase and lowercase letters.

Output:

For each test case, print the output on one line.

Sample Input:

1

3

I am happy today

To be or not to be

I want to win the practice contest

Sample Output:

I ma yppah yadot

oT eb ro ton ot eb

I tnaw ot niw eht ecitcarp tsetnoc

Solution:

#include<iostream>

#include<string>

#include<vector>

using namespace std;

void reverseString( string &str ) {

int len = str.length( );

for ( int i = 0 , j = len - 1; i < j; ++i , --j ){

char ch = str[ i ];

str[ i ] = str[ j ];

str[ j ] = ch;

}

}

// 声明:本代码仅供学习之用,请不要作为个人的成绩提交。

// http://blog.csdn.net/mskia

// email: bitrain@hotmail.com

int main( void ){

string str , temp;

int n , m;

vector< string > holdIt;

cin >> n;

for ( int i = 0; i < n ; ++i ) {

cin >> m;

getline( cin ,str ,'\n' );

for ( int j = 0; j < m ; ++j ) {

getline( cin ,str ,'\n' );

int front = 0 , back = front;

while ( back < str.length( ) ) {

while( str[ back ] == ' ' ) {

++back ;

}

front = back++ ;

for( ; ; ) {

if ( back == str.length( ) || str[ back ] == ' ' ) {

break;

}

++back;

}

temp = str.substr( front , back - front );

reverseString( temp );

holdIt.push_back( temp );

}

for ( int pos = 0; pos < holdIt.size( ) - 1; ++pos ) {

cout << holdIt[ pos ] << " ";

}

cout << holdIt[ holdIt.size( ) - 1 ] << endl;

holdIt.clear( );

}

if ( i != n - 1 ) {

cout << endl;

}

}

return 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航