HUAWEI Written Questions: Reverse Sentences

 

Title description

Dispose an English sentence in reverse order by word. For example, "I am a boy", after the reverse order,
all the words "boy a am I" are separated by a space. In the statement, except for the English letters, they no longer contain other characters


Interface Description

/ **
 * Reverse sentence
 * 
 * @param sentence original sentence
 * @return Reverse sentence
 * /
public String reverse (String sentence);

 

Enter description:

Dispose an English sentence in reverse order by word.

Output description:

Get the sentence in reverse order

Example 1

Input

I am a boy

Output

boy a am I
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

void myreverse(string &s, int pos1, int pos2) {
    for (int i = 0; i <= (pos2 - pos1) / 2; ++i) {
        char ch = s[pos1 + i];
        s[pos1 + i] = s[pos2 - i];
        s[pos2 - i] = ch;
    }
}

string reverse(string sentense) {
    int index = sentense.find(' ');
    if (index == -1) {
        myreverse(sentense, 0, sentense.size() - 1);
        return sentense;
    }
    int pos = 0;
    while (index != -1) {
        myreverse(sentense, pos, index - 1);
        pos = index + 1;
        index = sentense.find(' ', pos);
    }
    myreverse(sentense, pos, sentense.size() - 1);
    myreverse(sentense,0, sentense.size() - 1);
    return sentense;
}

int main() {
    string s;
    getline(cin, s);
    s = reverse(s);
    cout << s << endl;
    return 0;
}

 

 
Published 34 original articles · Like 10 · Visitors 10,000+

Guess you like

Origin blog.csdn.net/weixin_41111088/article/details/104790802