【C++】B2122 单词翻转

【C++】B2122 单词翻转

在这里插入图片描述

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: C++


文章目录


在这里插入图片描述

💯前言

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

在这里插入图片描述

💯题目描述

B2122 单词翻转

在这里插入图片描述

小明同学写单词的时候喜欢反着写,比如 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;}

代码解析

在这个实现中,我选择了通过手动反转每个单词的字符来恢复正确的单词顺序。

  1. 变量声明
    • string s;:声明一个字符串变量 s 用于存储从输入中读取的每个单词。
  2. 读取输入
    • while(cin >> s):使用 cin >> s 读取一个单词,直到没有更多输入。
  3. 反转每个单词
    • for(int i = s.size() - 1; i >= 0; i--):我们使用一个从单词末尾到开头的 for 循环,通过访问每个字符并逆序输出,来实现反转操作。
  4. 输出每个单词
    • cout << s[i];:逐个输出反转后的字符。
  5. 换行
    • 每个单词输出后,使用 cout << endl; 换行,确保每个单词占一行。

思路分析

这段代码通过遍历每个字符并从末尾到开头进行输出来实现反转。通过这种手动操作字符的方式,能够准确地完成任务。它的优点是直接且易于理解,但缺点是代码稍显冗长,且没有利用C++标准库提供的便捷工具。


💯二、老师的第一种做法

老师给出的第一种做法是通过手动交换字符串中的字符来反转单词。下面是老师的代码实现:

代码实现:

#include<iostream>#include<cstring>usingnamespace std;intmain(){  string str;while(cin >> str){ int left =0;int right = str.size()-1

Read more

FastAPI:Python 高性能 Web 框架的优雅之选

FastAPI:Python 高性能 Web 框架的优雅之选

🚀 FastAPI:Python 高性能 Web 框架的优雅之选 * 🌟 FastAPI 框架简介 * ⚡ 性能优势:为何选择 FastAPI? * 性能对比表 * 🔍 同步 vs 异步:性能测试揭秘 * 测试代码示例 * 测试结果分析 * 🛠️ FastAPI 开发体验:优雅而高效 * 1. 类型提示与自动验证 * 2. 交互式 API 文档 * 🏆 真实案例:为什么企业选择 FastAPI * 📚 后续学习引导 * 🎯 结语 🌟 FastAPI 框架简介 在当今快速发展的互联网时代,构建高效、可靠的 API 服务已成为后端开发的核心需求。FastAPI 作为 Python 生态中的新星,以其卓越的性能和开发者友好特性迅速赢得了广泛关注。 框架概述:FastAPI 是一个现代化的 Python Web 框架,专为构建

By Ne0inhk
【类和对象(下)】C++类与对象的进阶艺术:初始化列表到性能优化的完全指南

【类和对象(下)】C++类与对象的进阶艺术:初始化列表到性能优化的完全指南

🔥艾莉丝努力练剑:个人主页 ❄专栏传送门:《C语言》、《数据结构与算法》、C/C++干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬艾莉丝的简介:  C++的两个参考文档: 老朋友(非官方文档):cplusplus 官方文档(同步更新):cppreference 目录 一、只缘构造又重来 1.1  再探构造:初始化列表 1.2  初始化列表知识点总结 1.3  成员变量走初始化列表的逻辑 1.4  例题 1.5  成员变量 1.5.1  每个成员变量只能出现一次

By Ne0inhk
【Python】基础语法入门(一)

【Python】基础语法入门(一)

前言 Python作为一门入门门槛低、生态丰富的编程语言,Python早已成为编程初学者、数据分析从业者、后端开发者的首选工具之一。而掌握Python的第一步,就是吃透最核心的基础语法,常量与表达式、变量与类型、注释、输入输出及运算符。今天,我们就结合实例,手把手带你入门这些必备知识点,助你快速搭建Python语法框架。 一、常量与表达式 刚接触 Python 时,我们可以先把它当作一个功能强大的计算器 ,通过简单的表达式,以完成各类算术运算,比如简单的加减乘除,甚至复杂的乘方运算,都能直接通过“表达式”实现。 核心知识点: 1. 表达式与常量:形如1 + 2 * 3的算式称为“表达式”,运算结果为“表达式的返回值”;1、2、3这类固定值称为“字面值常量”,+、-、*、/则是“运算符”。 2. 运算规则:遵循“先乘除后加减”的数学逻辑,

By Ne0inhk
Python 属性描述符:从原理到 ORM 实践详解

Python 属性描述符:从原理到 ORM 实践详解

Python 属性描述符:从原理到 ORM 实践详解 * 一、为什么需要属性描述符?从property的局限性说起 * 二、属性描述符的定义与基础使用 * 2.1 什么是属性描述符? * 2.2 基础实现:整数类型校验描述符 * 2.3 在模型类中使用描述符 * 2.4 关键注意点:避免赋值死循环 * 三、属性描述符的分类:数据描述符与非数据描述符 * 3.1 数据描述符(Data Descriptor) * 3.2 非数据描述符(Non-data Descriptor) * 四、Python完整的属性查找过程:描述符的核心作用 * 4.1 核心查找顺序 * 4.2 关键验证:数据描述符覆盖实例属性 * 4.3 关键验证:

By Ne0inhk