字符串变形 C++

2023-11-03

目录

题目描述

思路分析

AC代码

题目描述

对于一个长度为 n 字符串,我们需要对它做一些变形。

首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。

比如"Hello World"变形后就变成了"wORLD hELLO"。

数据范围: 1\le n \le 10^61≤n≤106 , 字符串中包括大写英文字母、小写英文字母、空格。

进阶:空间复杂度 O(n)O(n) , 时间复杂度 O(n)O(n)

输入描述:

给定一个字符串s以及它的长度n(1 ≤ n ≤ 10^6)

返回值描述:

请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。

思路分析

要看清楚题目说的是将单个单词里面的字母顺序,而不是将这个字符串里面的单词的顺序颠倒。

因为C++的算法库里面有reverse函数,它的作用就是将整个字符串的字符顺序颠倒过来,所以我的思路比较大众化,为将单词里面的字母顺序颠倒,首先用reverse函数将整个字符串的字符顺序颠倒,然后,用空格作为字符串划分单词的判断点,对每一个由空格隔开的部分(即单词)再次使用reverse函数颠倒。

为了方便,我尽可能地调用库函数,像判断字母大小写,字符串的长度之类的。

我里面还用到了auto变量,auto变量属实好用。

AC代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
	string s;
	int n,i,j;
	getline(cin,s);
	cin>>n;
	for(auto& element:s){
		if(isupper(element))
		element+=32;
		else if(islower(element))
		element-=32;
	}
	reverse(s.begin(),s.end());
	for(i=0;i<n;i++){
		for(j=i;j<n;j++)
		if(s[j]==' ')
		break;
		reverse(s.begin()+i,s.begin()+j);
		i=j;
	}
	cout<<s;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串变形 C++ 的相关文章

随机推荐

  • 网络安全这条路怎么走?应该学些什么?

    我之前就写过一篇文章专门解答了这个问题 但是还是有很多小伙伴并不清楚这条路该怎么走下去 不同于Java C C 等后端开发岗位有非常明晰的学习路线 网路安全更多是靠自己摸索 要学的东西又杂又多 难成体系 网络安全虽然是计算机众多方向中的一支
  • 一文带你了解如何编写测试用例?【0基础也能看懂】

    我是小濠 一个快要秃头的测试人 欢迎点赞 收藏 留言 如有错误敬请指正 我收集了一些软件测试资料 关注我公众号 程序员小濠 免费领取 送给大家一句话 世界的美丽 来源于你的努力 因此 在介绍如何编写测试用例之前 先看一个软件系统登录功能的测
  • 查看WIN10密钥备忘

    查看WIN10密钥备忘 1 我们按下 Win R 打开运行或者开始菜单右键选择运行 输入 regedit 点击确定打开注册表编辑器 2 依次展开 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows N
  • 【Android -- 相机】调用摄像头拍照 & 选择照片

    效果图 现在很多应用中都会要求用户上传一张图片来作为头像 首先我在这接收使用相机拍照和在相册中选择图片 接下来先上效果图 实现代码 1 布局文件
  • Android OpenGL ES 3.0 开发 :3D实例化(Instancing 3D)

    1 OpenGL ES 实例化 Instancing OpenGL ES 实例化 Instancing 是一种只调用一次渲染函数就能绘制出很多物体的技术 可以实现将数据一次性发送给 GPU 告诉 OpenGL ES 使用一个绘制函数 将这些
  • Leetcode 82. Remove Duplicates from Sorted List II

    题目描述 Given a sorted linked list delete all nodes that have duplicate numbers leaving only distinct numbers from the orig
  • 数据库设计步骤(超级详细)

    数据库设计 我们先来看这样一个问题 假如遇到下面这样的设计需求 我们如何完成数据库的设计呢 设计需求 假设商品经销商有基本实体集 供应商Vendors 产品目录Products 顾客信息Customers和顾客订单Orders 各个实体的属
  • java.lang.object 下载_Java总结篇系列:java.lang.Object

    从本篇开始 将对Java中各知识点进行一次具体总结 以便对以往的Java知识进行一次回顾 同时在总结的过程中加深对Java的理解 Java作为一个庞大的知识体系 涉及到的知识点繁多 本文将从Java中最基本的类java lang Objec
  • QT-信号和槽函数

    信号和槽函数 signals slots Qt5作为c 的GUI开发类库 其最具代表性的特点就是信号和槽 类似于中断和中断处理函数调用的回调 callback 函数 但具体实现在应用层 并且使用起来较后者更为方便 作用 用于对象间的通信 实
  • 计算机网络学习—iptables的SNAT和DNAT

    iptables的SNAT和DNAT iptables SNAT SNAT策略概述 SNAT策略的典型应用环境 局域网主机共享单个公网IP地址接入internet SNAT策略的原理 源地址转换 Source Network Address
  • [前端系列第3弹]JS入门教程:从零开始学习JavaScript

    本文将带领大家 从零开始学习JavaScript fighting 目录 一 JavaScript简介 二 变量和数据类型 三 注释和分号 四 算术运算符 五 表达式和语句 六 代码块和作用域 七 函数 最重要 一 JavaScript简介
  • ES索引的备份与恢复

    ES索引的备份与恢复 1 索引的备份与恢复 步骤首先是进行创建备份仓库这里选择如下 usr local backup 在es的yml下进行添加配置 path repo usr local backup 然后在kibana中执行 PUT sn
  • 战略方法论

    父文章 人人都是战略家 2018年注册会计师公司战略与风险考点 swot分析 知识点 注册会计师 SWOT分析 一 基本原理 所谓SWOT分析 即基于内外部竞争环境和竞争条件下的态势分析 就是将与研究对象密切相关的各种主要内部优势 劣势和外
  • BRDF

    一 BRDF简介 BRDF表示的是双向反射分布函数 Bidirectional Reflectance Distribution Function 它描述了光线如何在物体表面进行反射 可以用来描述材质属性 BRDF的输入参数是入射光的的仰角
  • CSRF漏洞原理/防御

    CSRF 跨站请求伪造 原理 CSRF是指攻击者利用已登录的用户身份 伪造用户请求 从而执行非法操作 触发点 检测 CSRF常出现在留言 论坛 后台管理 用户中心等功能 CSRF有三个前提 第一 目标用户处于登录状态 第二 后端代码逻辑不严
  • 在matlab中计算距离矩阵

    matlab中自带的计算距离矩阵的函数有两个pdist和pdist2 前者计算一个向量自身的距离矩阵 后者计算两个向量之间的距离矩阵 基本调用形式如下 D pdist X D pdist2 X Y 这两个函数都提供多种距离度量形式 非常方便
  • html之select标签

    基本用法
  • js实现图片压缩上传

    javascript 处理图片压缩 剪切 模糊和上传 最近在研究H5前端图片处理相关技术 方向有图片压缩 裁切 旋转 模糊等 现在已经整理成对应的demo 上传至github 一 js脚本实现图片压缩 CompressImageUtiles
  • JVM(8)--垃圾回收算法与垃圾回收器

    一 概述 深入理解java虚拟机中写到 Java与C 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 墙外面的人想进去 墙里面的人却想出来 Java在动态内存分配与回收上已经是自动化的 但是当需要排查各种内存溢出 内存泄漏问题时 当垃圾
  • 字符串变形 C++

    目录 题目描述 思路分析 AC代码 题目描述 对于一个长度为 n 字符串 我们需要对它做一些变形 首先这个字符串中包含着一些空格 就像 Hello World 一样 然后我们要做的是把这个字符串中由空格隔开的单词反序 同时反转每个字符的大小