单词翻转(信息学奥赛一本通1144)

题目来源

信息学奥赛一本通(C++版)在线评测系统


题目描述

1144:单词翻转


时间限制: 1000 ms         内存限制: 65536 KB
提交数:60098    通过数: 26099

【题目描述】

输入一个句子(一行),将句子中的每一个单词翻转后输出。

【输入】

只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。

【输出】

翻转每一个单词后的字符串,单词之间的空格需与原文一致。

【输入样例】

hello world

【输出样例】

olleh dlrow

题目限制

一次遍历解题


思路分析

解题思路

  1. 输入处理

    • 首先,我们需要读取输入的句子,将其存储在一个字符串中。由于句子中可能包含空格,我们可以使用 getline 函数来读取整行输入。
  2. 单词分割与翻转

    • 遍历输入的字符串,通过空格来识别每个单词的边界。
    • 对于每个单词,我们可以使用双指针法进行翻转。具体来说,我们设置两个指针,一个指向单词的起始位置,另一个指向单词的结束位置,然后交换这两个指针所指向的字符,并将指针向中间移动,直到两个指针相遇。
  3. 输出结果

    • 完成所有单词的翻转后,将处理后的字符串输出。

具体代码

#include<iostream>
#include<string>
using namespace std;
int main()
{int left = 0, right = 0;string str; getline(cin, str);for (int i = 0; i <= str.size(); i++){if (str[i] == ' ' || i == str.size()){right--;while (left < right){swap(str[left++], str[right--]);}left = i + 1;right = i + 1;}else right++;}cout << str;
}

代码功能概述

这段代码的主要功能是对输入的一行字符串中的每个单词进行反转,同时保持单词在字符串中的顺序不变。例如,输入 "hello world",输出将是 "olleh dlrow"

代码逻辑详细解释

  1. 变量初始化

    • left 和 right 初始化为 0,它们将用于标记每个单词的起始和结束位置。
    • str 是用于存储用户输入的字符串,通过 getline(cin, str) 从标准输入读取一行字符串。
  2. 遍历字符串

    • 使用 for 循环遍历字符串,循环变量 i 从 0 到 str.size()(注意这里包含了 str.size() 这个边界,用于处理最后一个单词)。
    • 当遇到空格(str[i] == ' ')或者到达字符串末尾(i == str.size())时,说明一个单词结束。此时,right 减 1(因为之前 right 多走了一步),然后进入 while 循环,该循环用于反转当前单词。在 while 循环中,使用 swap 函数交换 left 和 right 位置的字符,并将 left 递增,right 递减,直到 left 不小于 right,完成单词的反转。
    • 反转完成后,更新 left 和 right 的值为 i + 1,即指向下一个单词的起始位置。
    • 如果当前字符不是空格,right 加 1,继续扩展当前单词的范围。
  3. 输出结果

    • 遍历结束后,所有单词都已反转,通过 cout << str; 输出处理后的字符串。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0到1:C++ 开启游戏开发奇幻之旅(二)

目录 游戏开发核心组件设计 游戏循环 游戏对象管理 碰撞检测 人工智能&#xff08;AI&#xff09; 与物理引擎 人工智能 物理引擎 性能优化技巧 内存管理优化 多线程处理 实战案例&#xff1a;开发一个简单的 2D 射击游戏 项目结构设计 代码实现 总结与展望 游戏…

【Block总结】DynamicFilter,动态滤波器降低计算复杂度,替换传统的MHSA|即插即用

论文信息 标题: FFT-based Dynamic Token Mixer for Vision 论文链接: https://arxiv.org/pdf/2303.03932 关键词: 深度学习、计算机视觉、对象检测、分割 GitHub链接: https://github.com/okojoalg/dfformer 创新点 本论文提出了一种新的标记混合器&#xff08;token mix…

(done) MIT6.S081 2023 学习笔记 (Day6: LAB5 COW Fork)

网页&#xff1a;https://pdos.csail.mit.edu/6.S081/2023/labs/cow.html 任务1&#xff1a;Implement copy-on-write fork(hard) (完成) 现实中的问题如下&#xff1a; xv6中的fork()系统调用会将父进程的用户空间内存全部复制到子进程中。如果父进程很大&#xff0c;复制过程…

鸢尾花书01---基本介绍和Jupyterlab的上手

文章目录 1.致谢和推荐2.py和.ipynb区别3.Jupyterlab的上手3.1入口3.2页面展示3.3相关键介绍3.4代码的运行3.5重命名3.6latex和markdown说明 1.致谢和推荐 这个系列是关于一套书籍&#xff0c;结合了python和数学&#xff0c;机器学习等等相关的理论&#xff0c;总结的7本书籍…

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》033-响应式编程的原理及在Vue中的应用

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

【javaweb项目idea版】蛋糕商城(可复用成其他商城项目)

该项目虽然是蛋糕商城项目&#xff0c;但是可以复用成其他商城项目或者购物车项目 想要源码的uu可点赞后私聊 技术栈 主要为&#xff1a;javawebservletmvcc3p0idea运行 功能模块 主要分为用户模块和后台管理员模块 具有商城购物的完整功能 基础模块 登录注册个人信息编辑…

为什么LabVIEW适合软硬件结合的项目?

LabVIEW是一种基于图形化编程的开发平台&#xff0c;广泛应用于软硬件结合的项目中。其强大的硬件接口支持、实时数据采集能力、并行处理能力和直观的用户界面&#xff0c;使得它成为工业控制、仪器仪表、自动化测试等领域中软硬件系统集成的理想选择。LabVIEW的设计哲学强调模…

Fort Firewall:全方位守护网络安全

Fort Firewall是一款专为 Windows 操作系统设计的开源防火墙工具&#xff0c;旨在为用户提供全面的网络安全保护。它基于 Windows 过滤平台&#xff08;WFP&#xff09;&#xff0c;能够与系统无缝集成&#xff0c;确保高效的网络流量管理和安全防护。该软件支持实时监控网络流…

【PyTorch】6.张量形状操作:在深度学习的 “魔方” 里,玩转张量形状

目录 1. reshape 函数的用法 2. transpose 和 permute 函数的使用 4. squeeze 和 unsqueeze 函数的用法 5. 小节 个人主页&#xff1a;Icomi 专栏地址&#xff1a;PyTorch入门 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&am…

[STM32 - 野火] - - - 固件库学习笔记 - - -十三.高级定时器

一、高级定时器简介 高级定时器的简介在前面一章已经介绍过&#xff0c;可以点击下面链接了解&#xff0c;在这里进行一些补充。 [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器 1.1 功能简介 1、高级定时器可以向上/向下/两边计数&#xff0c;还独有一个重复计…

Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)

了解安全三元组以及常见的安全模型和原则。 任务1&#xff1a;介绍 安全已成为一个流行词;每家公司都想声称其产品或服务是安全的。但事实真的如此吗&#xff1f; 在我们开始讨论不同的安全原则之前&#xff0c;了解我们正在保护资产的对手至关重要。您是否试图阻止蹒跚学步…

python:斐索实验(Fizeau experiment)

斐索实验&#xff08;Fizeau experiment&#xff09;是在1851年由法国物理学家阿曼德斐索&#xff08;Armand Fizeau&#xff09;进行的一项重要实验&#xff0c;旨在测量光在移动介质中的传播速度。这项实验的结果对当时的物理理论产生了深远的影响&#xff0c;并且在后来的相…

青少年CTF练习平台 贪吃蛇

题目 CtrlU快捷键查看页面源代码 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>贪吃蛇游戏</title><style>#gameCanvas {border: 1px solid black;}</style> </head>…

芯片AI深度实战:基础篇之Ollama

有这么多大模型&#xff0c;怎么本地用&#xff1f; Ollama可以解决这一问题。不依赖GPU&#xff0c;也不需要编程。就可以在CPU上运行自己的大模型。 软件甚至不用安装&#xff0c;直接在ollama官网下载可执行文件即可。 现在最流行的deepseek-r1也可以使用。当然还有我认为最…

本地部署deepseek模型步骤

文章目录 0.deepseek简介1.安装ollama软件2.配置合适的deepseek模型3.安装chatbox可视化 0.deepseek简介 DeepSeek 是一家专注于人工智能技术研发的公司&#xff0c;致力于打造高性能、低成本的 AI 模型&#xff0c;其目标是让 AI 技术更加普惠&#xff0c;让更多人能够用上强…

DeepSeek R1中提到“知识蒸馏”到底是什么

在 DeepSeek-R1 中&#xff0c;知识蒸馏&#xff08;Knowledge Distillation&#xff09;是实现模型高效压缩与性能优化的核心技术之一。在DeepSeek的论文中&#xff0c;使用 DeepSeek-R1&#xff08;教师模型&#xff09;生成 800K 高质量训练样本&#xff0c;涵盖数学、编程、…

关联传播和 Python 和 Scikit-learn 实现

文章目录 一、说明二、什么是 Affinity Propagation。2.1 先说Affinity 传播的工作原理2.2 更多细节2.3 传播两种类型的消息2.4 计算责任和可用性的分数2.4.1 责任2.4.2 可用性分解2.4.3 更新分数&#xff1a;集群是如何形成的2.4.4 估计集群本身的数量。 三、亲和力传播的一些…

通过配置代理解决跨域问题(Vue+SpringBoot项目为例)

跨域问题&#xff1a; 是由浏览器的同源策略引起的&#xff0c;同源策略是一种安全策略&#xff0c;用于防止一个网站访问其他网站的数据。 同源是指协议、域名和端口号都相同。 跨域问题常常出现在前端项目中&#xff0c;当浏览器中的前端代码尝试从不同的域名、端口或协议…

(1)Linux高级命令简介

Linux高级命令简介 在安装好linux环境以后第一件事情就是去学习一些linux的基本指令&#xff0c;我在这里用的是CentOS7作演示。 首先在VirtualBox上装好Linux以后&#xff0c;启动我们的linux&#xff0c;输入账号密码以后学习第一个指令 简介 Linux高级命令简介ip addrtou…

TOGAF之架构标准规范-信息系统架构 | 数据架构

TOGAF是工业级的企业架构标准规范&#xff0c;信息系统架构阶段是由数据架构阶段以及应用架构阶段构成&#xff0c;本文主要描述信息系统架构阶段中的数据架构阶段。 如上所示&#xff0c;信息系统架构&#xff08;Information Systems Architectures&#xff09;在TOGAF标准规…