【笔试强训day02】倒置字符串 排序子序列

news/2024/10/18 6:07:36/

在这里插入图片描述

​👻内容专栏: 笔试强训集锦
🐨本文概括:C++笔试强训day02。
🐼本文作者: 阿四啊
🐸发布时间:2023.10.1

二、day02

1.倒置字符串

题目描述:

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

输入描述:

每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100

示例1:

输入:

I like beijing.

输出:

beijing. like I

基本思想:

1.整体逆置

2.每个单词进行逆置

注意:遇到 空格 或者 ‘\0’ 结束,进行辨别一个单词,注意分界,到 ‘\0’ 之后便不能再进行逆置

代码实现:

#include <iostream>
#include <algorithm>
using namespace std;int main() {string s;getline(cin,s);//整体逆置字符串.gnijieb ekil Ireverse(s.begin(),s.end());//对每个单词进行逆置auto end = s.begin();while(end != s.end()){auto start = end;//寻找空格或者字符串的end位置('\0')while(end != s.end() && *end != ' ') end++;reverse(start, end);//end指向空格后往后跳一个,如果end指向为'\0',则不需要++if(*end == ' ') end++;}cout << s;return 0;
}

2.排序子序列

题目描述:

牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.
如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2

输入描述:

输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。

输出描述:

输出一个整数表示牛牛可以将A最少划分为多少段排序子序列。

基本思想:

这一题关键得弄清楚非递增与非递减子序列

递增子序列:1 2 3 4 5

递减子序列:9 8 7 6 5

非递增子序列:9 7 6 6 5 3 2 1

非递减子序列:1 2 3 3 4 5 8 8

画图演示:

在这里插入图片描述

注意:i在子序列中遍历时,必须得小于数组的大小n,否则可能会出现越界情况。另外,这样也不能保证i + 1 < n,即访问a[i + 1]时也会出现越界访问,此时我们可以在开辟数组时,根据给出的数组大小n,我们多开辟一个字节的空间即n + 1,将最后一个元素值改为0

代码实现:

#include <iostream>
#include <vector>
using namespace std;int main() {int n;//输入整数cin >> n;vector<int> a;a.resize(n + 1);a[n] = 0;//输入数组a中元素for(int i = 0;i < n;i++){cin >> a[i];}//遍历一次数组aint i = 0;int count = 0; //计算一共需要划分多少段子序列while(i < n){//可能即将进入非递减子序列if(a[i] < a[i + 1]){//注意i的值必须小于n,否则会出现越界情况while(i < n && a[i] < a[i + 1]){i++;}//走完一组非递减子序列count++count++;}else if(a[i] == a[i + 1]){i++; }else{//注意i的值必须小于n,否则会出现越界情况while(i < n && a[i] > a[i + 1]){i++;}//走完一组非递增子序列count++count++;}//i++往后遍历i++;}cout << count;}

http://www.ppmy.cn/news/1132008.html

相关文章

网络安全——自学(黑客)方法

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…

CocosCreator3.8研究笔记(二十四)CocosCreator 动画系统-动画编辑器实操-关键帧实现动态水印动画效果

上一篇&#xff0c;我们介绍了动画编辑器相关功能面板说明&#xff0c;感兴趣的朋友可以前往阅读&#xff1a; CocosCreator3.8研究笔记&#xff08;二十三&#xff09;CocosCreator 动画系统-动画编辑器相关功能面板说明。 熟悉了动画编辑器的基础操作&#xff0c;那么再使用动…

PgSQL-内核特性-TupleTableSlotOps

PgSQL-内核特性-TupleTableSlotOps 执行器中表达式结果、函数结果、投影结果等&#xff0c;各种结果都需要以元组的形式返回&#xff0c;所以PgSQL引入了一种通用格式保存数据&#xff1a;TupleTableSlot。PgSQL执行器将记录存储到“元组表”中在各个算子之间进行传递&#xff…

剖析华为云Astro Platform技术价值与使用体验

面对企业IT专业人员紧缺的挑战&#xff0c;华为云Astro低代码平台提供创新解决方案。让非编程专业人士能快速构建、部署应用&#xff0c;缓解开发资源压力&#xff0c;并高度整合技术架构&#xff0c;强化项目沟通协作。使每个参与其中的角色都找到自己的位置&#xff0c;携手全…

工信部:杭州亚运会开幕式首创 5G 超密组网方案,场馆网络无缝覆盖

“工信 V 报”今日发布消息称&#xff0c;工信部经过精心统筹、周密部署&#xff0c;举全系统之力圆满完成了杭州亚运会开幕式各项保障任务。 据介绍&#xff0c;亚运会的指挥调度、安全保卫、通信网络、计时记分、电视转播等系统顺畅运行&#xff0c;对无线电安全、信息通信服…

Hello World!1分钟配置好你的Go环境

目录 一、简介为什么选择Golang&#xff1f;Golang与其他语言的对比核心特性应用场景社区和生态系统性能标准企业级应用 二、环境要求操作系统WindowsLinux/UnixmacOS 硬件需求其他依赖软件异常情况和处理方法 三、下载和安装GolangWindows系统使用官方安装包使用Chocolatey&am…

Springboot中使用拦截器、过滤器、监听器

一、Servlet、Filter&#xff08;过滤器&#xff09;、 Listener&#xff08;监听器&#xff09;、Interceptor&#xff08;拦截器&#xff09; Javaweb三大组件&#xff1a;servlet、Filter&#xff08;过滤器&#xff09;、 Listener&#xff08;监听器&#xff09; Spring…

编程每日一练(多语言实现)基础篇:求总数问题

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现3.4 JavaScript 语言实现 一、实例描述 集邮爱好者把所有的邮票存放在三个集邮册中&#xff0c;在A册内存放全部的十分之二&#xff0c;在B册内存放不知道是全部的七分之几&…