B2122 单词翻转

单词翻转

题目描述

小明同学写单词的时候喜欢反着写,比如 hello 他会写成 olleh。给出小明同学写的一个句子,请你将所有的单词复原。

输入格式

共一行,一个字符串表示句子,单词之间以空格分隔。

输出格式

每个单词一行。

样例 #1

样例输入 #1

olleh dlrow

样例输出 #1

hello
world

提示

句子长度不超过 100 100 100,仅包含小写字母和空格,不存在多余的空格。

方法1

解题思路:

这道题目要求我们将句子中每个单词反转后输出。我们可以按照以下步骤进行:

  1. 读取输入的句子。
  2. 将句子按空格分割成单词。
  3. 对于每个单词,将其反转后输出。

C++代码实现:

#include 
#include 
#include 
#include 
using namespace std;

int main() {
    string sentence;
    getline(cin, sentence); // 读取句子
    
    stringstream ss(sentence);
    string word;
    
    while (ss >> word) {
        reverse(word.begin(), word.end()); // 反转单词
        cout << word << endl; // 输出反转后的单词
    }
    
    return 0;
}

代码解释:

  1. 我们首先引入了必要的头文件:iostream用于输入输出,string用于处理字符串,sstream用于字符串流处理,algorithm用于反转字符串。

  2. main函数中,我们定义了一个字符串变量sentence用于存储输入的句子。

  3. 我们使用getline函数读取一整行的句子,并将其存储在sentence中。

  4. 接下来,我们创建一个字符串流对象ss,并将sentence传递给它。这样可以方便地按空格分割句子中的单词。

  5. 我们定义了一个字符串变量word用于存储每个单词。

  6. 使用while循环从字符串流ss中读取单词,并将每个单词存储在word中。

  7. 对于每个读取到的单词,我们使用reverse函数将其反转。reverse函数接受两个迭代器参数,表示要反转的范围。我们传递word.begin()word.end()作为参数,表示反转整个单词。

  8. 将反转后的单词输出,并换行。

  9. 重复步骤6-8,直到读取完所有的单词。

通过使用字符串流stringstream,我们可以方便地将句子按空格分割成单词。然后,对于每个单词,使用reverse函数将其反转,并输出反转后的单词。

这段代码利用了C++标准库中的字符串处理函数和算法,使得代码简洁明了。通过简单的字符串操作和循环,我们就可以完成单词的反转和输出。

方法2

方法二:使用while(cin)读取单词

C++代码实现:

#include 
#include 
#include 
using namespace std;

int main() {
    string word;
    
    while (cin >> word) {
        reverse(word.begin(), word.end()); // 反转单词
        cout << word << endl; // 输出反转后的单词
    }
    
    return 0;
}

代码解释:

1 . 我们首先引入了必要的头文件:iostream用于输入输出,string用于处理字符串,algorithm用于反转字符串。

2 . 在main函数中,我们定义了一个字符串变量word用于存储每个单词。

3 . 使用while(cin >> word)直接从标准输入读取单词。这个语句的含义是:

  • cin >> word表示从标准输入读取一个以空格分隔的单词,并将其存储在word中。
  • while(cin >> word)表示只要能够成功读取到单词,就继续执行循环体内的代码。

4 . 在循环体内,我们使用reverse函数将读取到的单词word反转。reverse函数接受两个迭代器参数,表示要反转的范围。我们传递word.begin()word.end()作为参数,表示反转整个单词。

5 . 将反转后的单词输出,并换行。

6 . 重复步骤3-5,直到无法从标准输入读取到更多的单词为止。

通过使用while(cin >> word),我们可以直接从标准输入读取单词,而不需要先将整个句子读取到字符串中。每次循环读取一个单词,然后立即对其进行反转并输出。

这种方法更加简洁,不需要使用字符串流或者额外的字符串变量来存储整个句子。通过while循环和cin的组合,我们可以逐个处理输入的单词,直到没有更多的单词为止。

这两种方法都可以正确地反转并输出句子中的单词,你可以根据个人喜好选择其中一种方法进行实现。

你可能感兴趣的:(洛谷网站题解,字符串入门,c++)