首页 > 其他分享 >B2122 单词翻转

B2122 单词翻转

时间:2024-05-30 21:58:32浏览次数:6  
标签:word 读取 B2122 反转 单词 字符串 句子 翻转

单词翻转

题目描述

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

输入格式

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

输出格式

每个单词一行。

样例 #1

样例输入 #1

olleh dlrow

样例输出 #1

hello
world

提示

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

方法1

解题思路:

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

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

C++代码实现:

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
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 <iostream>
#include <string>
#include <algorithm>
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的组合,我们可以逐个处理输入的单词,直到没有更多的单词为止。

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

标签:word,读取,B2122,反转,单词,字符串,句子,翻转
From: https://blog.csdn.net/m0_46192147/article/details/139258759

相关文章

  • 动态规划之单词拆分
            这次分享一道关于动态规划的leetcode,单词拆分。单词拆分给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。......
  • 如何设计简单词法分析器 C++(面向对象)
    前言与其他教程不同,本文实现的词法分析器借鉴于C++输入流我搜过的教程基本上都是从状态转换的思想入手,虽然本文思路类似于状态转换,但也有独到之处。从面向对象的角度其他教程大多采用面向过程,二者都能解决问题,各有优劣。只不过我从面向对象的角度,给读者提供一个新......
  • 指针(2),迭代,快速排序,单词倒置
    指针运算:& * +N-Np++ //往后跳了一个元素 p-- //往前一个元素 p-q //相同类型的指针减出的来的结果为,地址之间相差的元素个数 关系运算:p>q  p<q >>=<<=!= 迭代:迭代其实就是一种特殊的循环,迭代根据上一次循环得到的运算结果来进行下......
  • Day 8 | 344.反转字符串 、541. 反转字符串II 、151.翻转字符串里的单词
    344.反转字符串建议:本题是字符串基础题目,就是考察reverse函数的实现,同时也明确一下平时刷题什么时候用库函数,什么时候不用库函数题目链接/文章讲解/视频讲解:https://programmercarl.com/0344.反转字符串.html思考太简单了classSolution:defreverseString(self,......
  • CSP历年复赛题-P1308 [NOIP2011 普及组] 统计单词数
    原题链接:https://www.luogu.com.cn/problem/P1308题意解读:给定单词a,文本b,在b中找a的个数,并找a第一次出现的位置,注意b中任何位置可能含有多个连续空格。解题思路:通过双指针找b中每一个单词的首、尾位置i,j,与a进行一一比较即可。注意1:比较时不考虑大小写,可以统一转成小写字符tolo......
  • 算法训练 | 二叉树Part2 | 层序遍历、226.翻转二叉树、101.对称二叉树
    目录广度优先226.翻转二叉树递归法⭐迭代法层序法101.对称二叉树后序遍历法⭐迭代法嵌入式学习分享个人主页:Orion嵌入式随想录-小红书(xiaohongshu.com)广度优先解题思路层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。需要借用一个辅助数据......
  • 记单词
    1.assign查看代码[əˈsain]vt.分配;指定(时间,地点等);委派拆分:as-朝,向+-sign-标记,指示⇒指示某人到某事或指示某事给某人例:Iassignedhimthejob.我派他担任这一职务。Theyhaveassignedmeasmallroom.他们已给我分配了一个小房间。Thecaptai......
  • Day36 代码随想录打卡|二叉树篇---翻转二叉树
    题目(leecodeT226):给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。方法:迭代法翻转二叉树,即从根节点开始,一一交换每个节点的左右孩子节点,然后递归此过程,将根节点的左右孩子节点再分别作为参数传入交换节点的函数中。重复此过程,直到结束。就完成了二叉树的翻......
  • 二叉树翻转
    给定一棵二叉树的根节点 root,请左右翻转这棵二叉树,并返回其根节点。示例1:输入:root=[5,7,9,8,3,2,4]输出:[5,9,7,4,2,3,8]提示:树中节点数目范围在 [0,100] 内-100<=Node.val<=100思路:将二叉树看成一个只有左右子树的最小二叉树,那么翻转这个二叉树就是将左......
  • P8765 [蓝桥杯 2021 国 AB] 翻转括号序列
    本文参考博客[蓝桥杯2021国AB]翻转括号序列(线段树上二分)一、问题简析线段树+二分初步分析令(的值为1,)的值为-1,则对于序列\(a_La_{L+1}a_{L+2}...a_R\),其为合法序列的条件为\[\begin{cases}\sum_{n=L}^R{a_n}=0\\\forall~k\in[L,R],\sum_{n=L}^k{a_n}\ge......