当前位置: 首页 > news >正文

【OJ题解】C++实现反转字符串中的每个单词

💵个人主页: 起名字真南
💵个人专栏:【数据结构初阶】 【C语言】 【C++】 【OJ题解】

请添加图片描述

题目要求:给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

题目链接: 反转字符串中的所有单词

反转字符串中每个单词的字符顺序

题目描述

给定一个字符串 s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例

  • 输入:s = "Let's take LeetCode contest"

  • 输出:"s'teL ekat edoCteeL tsetnoc"

  • 输入:s = "Mr Ding"

  • 输出:"rM gniD"

解题思路

  1. 识别单词

    • 首先需要遍历字符串,找到每个单词的起始和结束位置。单词由字母组成,空格用来分隔单词。
  2. 反转单词

    • 对于每个找到的单词,利用字符串反转的功能,将单词的字符顺序进行反转。
  3. 构建结果

    • 在保持原有空格和单词顺序的基础上,将反转后的单词拼接成最终的结果字符串。
  4. 边界处理

    • 需要考虑多个空格的情况,确保反转后的字符串仍然保留原始的空格格式。

具体实现步骤

  1. 使用 stringstream 或直接遍历字符串来识别单词。
  2. 将每个单词反转,并存储在一个结果字符串中。
  3. 将结果字符串中的单词拼接在一起,并保持空格的原始位置。

C++ 示例代码

以下是根据上述思路实现的 C++ 代码:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;class Solution {
public:string reverseWords(string s) {stringstream ss(s);string word;string result;while (ss >> word) { // 逐个读取单词reverse(word.begin(), word.end()); // 反转单词result += word + " "; // 拼接反转后的单词}if (!result.empty()) {result.pop_back(); // 移除最后多余的空格}return result;}
};int main() {Solution solution;string s = "Let's take LeetCode contest";string result = solution.reverseWords(s);cout << result << endl; // 输出: "s'teL ekat edoCteeL tsetnoc"return 0;
}

代码解析

  • stringstream:用于便捷地读取字符串中的单词。
  • reverse:C++ STL 提供的反转功能,用于反转单个单词。
  • 结果拼接:将反转后的单词拼接到结果字符串中,并在每个单词后加上空格,最后再移除多余的空格。

总结

这个算法的时间复杂度为 O(n),其中 n 是字符串 s 的长度。通过这种方式,我们不仅实现了题目的要求,还保持了原始字符串的结构与格式。


http://www.mrgr.cn/news/64235.html

相关文章:

  • PostgreSQL技术内幕17:PG分区表
  • 第八章课后习题
  • 【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导
  • 【攻防实战】手把手带你打穿某集团内网(上)
  • 医院信息化与智能化系统(15)
  • 什么是人工智能(AI)?
  • Excel函数CUnique连接合并指定区域的唯一值
  • 远程控制时频繁掉线的原因
  • [每周一更]-(第121期):模拟面试|微服务架构面试思路解析
  • 使用 Faster Whisper 和 Gradio 实现实时语音转文字
  • 2024系统架构师---综合题考试真题答案
  • cangjie仓颉程序设计-程序结构(二)
  • 【含文档】基于ssm+jsp的超市订单后台理系统(含源码+数据库+lw)
  • Mac OS 配置Docker+Mysql
  • 2024 Rust现代实用教程 Trait特质
  • Docker:namespace隔离实战
  • 模板注入代码执行漏洞
  • 前端三件套(HTML + CSS + JS)
  • 为什么大家都在学数字孪生呢?
  • Ubuntu删除docker
  • DataFlow v202410 版本更新 一站式数据处理平台
  • WPF中的CommandParameter如何使用
  • 今日 AI 简报|零样本视频生成、移动端轻量语言模型、自动驾驶多模态模型等前沿 AI 技术集中亮相
  • JavaScript本地存储的方式有哪些
  • Linux安装部署MinIO
  • 常见 CSS 选择器用法