浙大在线评测 1151 Word Reversal

类别:编程语言 点击:0 评论:0 推荐:
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: [email protected]

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;
}

本文地址:http://com.8s8s.com/it/it26762.htm