面试题42—翻转单词顺序

来源:互联网 发布:牛顿环的实验数据 编辑:程序博客网 时间:2024/06/17 00:07

**题目:输入一个英文句子,翻转句子中单词的顺序,但是单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。
代码示例:**

#include<iostream>#include<string>using namespace std;bool InverseStence(string &str)//翻转句子{    if (str == "")        return false;    int i = 0;    int j = str.length() - 1;    while (i < j)    {        char ch = str[i];        str[i] = str[j];        str[j] = ch;        i++;        j--;    }    return true;}bool Inverse(string &str)//翻转句子,翻转句子中的单词{    if (str == "")        return false;    if (str == " ")        return true;    InverseStence(str);    int i = 0;    int k = 0;    int j = 0;    while (str[k] != '\0')    {        while (str[k] != ' ')        {            k++;            if (str[k] == '\0')                break;        }        j = k - 1;        while (i < j)        {            char ch = str[i];            str[i] = str[j];            str[j] = ch;            i++;            j--;        }        while (str[k] == ' ')            k++;        i = k;    }}int main(){    string str = "I am a student";    bool flag = Inverse(str);    cout << str << endl;}