【C++】B2122 单词翻转
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: C++
文章目录
💯前言
在计算机科学中,字符串处理是一个非常基础且常见的任务。本题主要围绕如何将一个句子中的每个单词反转来进行练习。这个问题不仅考察了对字符串操作的理解,还涉及了不同的解决方法。在本篇文章中,我们将详细探讨我自己的做法、老师提出的两种做法,并深入讲解C++中 reverse 函数的使用,最后通过对比和拓展分析这些方法的优缺点。
C++ 参考手册
💯题目描述

小明同学写单词的时候喜欢反着写,比如 hello 他会写成 olleh。给出小明同学写的一个句子,请你将所有的单词复原。
输入格式
共一行,一个字符串表示句子,单词之间以空格分隔。
输出格式
每个单词一行。
样例 #1
样例输入 #1
olleh dlrow 样例输出 #1
hello world 💯一、我的做法
代码实现:
#include<iostream>#include<string>usingnamespace std;intmain(){ string s;while(cin >> s){ for(int i = s.size()-1; i >=0; i--){ cout << s[i];} cout << endl;}return0;}代码解析
在这个实现中,我选择了通过手动反转每个单词的字符来恢复正确的单词顺序。
- 变量声明:
string s;:声明一个字符串变量s用于存储从输入中读取的每个单词。
- 读取输入:
while(cin >> s):使用cin >> s读取一个单词,直到没有更多输入。
- 反转每个单词:
for(int i = s.size() - 1; i >= 0; i--):我们使用一个从单词末尾到开头的for循环,通过访问每个字符并逆序输出,来实现反转操作。
- 输出每个单词:
cout << s[i];:逐个输出反转后的字符。
- 换行:
- 每个单词输出后,使用
cout << endl;换行,确保每个单词占一行。
- 每个单词输出后,使用
思路分析
这段代码通过遍历每个字符并从末尾到开头进行输出来实现反转。通过这种手动操作字符的方式,能够准确地完成任务。它的优点是直接且易于理解,但缺点是代码稍显冗长,且没有利用C++标准库提供的便捷工具。
💯二、老师的第一种做法
老师给出的第一种做法是通过手动交换字符串中的字符来反转单词。下面是老师的代码实现:
代码实现:
#include<iostream>#include<cstring>usingnamespace std;intmain(){ string str;while(cin >> str){ int left =0;int right = str.size()-1