【C++OJ2】字符串的倒置 &排列子序列

2023-10-26

愿我们,
都能成为可爱又有趣的大人呀~

目录

  • 每日总结
  • 排序子序列
  • 字符串的倒置 

>>1.每日总结

  • 当一个类对象的生命周期结束后,关于调用析构函数:先调用派生类的析构函数,后调用基类的析构函数。
  • 关于一个类的静态成员描述:该类的静态成员变量得值不可修改。
  • 关于C++:任何引用都必须指向一个实例。
  • 关于虚函数:内联函数 inline ,不能是虚函数。 虚函数不可以是一个static型的函数。
  • C++的inline关键字:  定义在Class声明内的成员函数默认是 inline 函数。类定义中包含数据成员和函数成员的声明。

>>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:

输入

6

1 2 3 2 2 1

输出

2

【题目解析】:
本题要求解的是排序子序列,排列子序列为非递增或者非递减。注意:非递减就是a[i]<=a[i+1],递减就是a[i]>a[i+1],递减就是a[i]<a[i+1].
【解题思路】:
1. 本题依次比较整个数组
2. a[i+1]>a[i] ,则进入非递增序列判断,直到遍历到下一个值不大于等于为止count++,然后进行下一位
置的判断
3. a[i+1]<a[i],则进入非递增序列判断,直到遍历到下一个值不小于等于为止count++,然后进行下一位
置的判断
4. a[i+1] == a[i]不进行操作,++i进行下一位置遍历,因为相等既可以属于非递增序列,也可以属于非递减
序列。
本题注意点:本题开始比较a[i+1]与a[i]进行比较,为了避免越界,数组定义为n+1个,同时给a[n]=0;a[n]=0带来的影响。

代码实现:

//排列子序列
#include <iostream>
#include <vector>
using namespace std;
int main(){
    int n;
    cin >> n;
   //这里注意多给了一个值,是处理越界的情况的比较,具体参考上面
    vector<int> a;
    a.resize(n + 1);
    a[n] = 0;
//读入数组
    int i = 0; 
    for (i = 0; i < n; ++i) 
	cin >> a[i]; 
    i = 0; 
    int count = 0; 
    while (i < n) { 
// 非递减子序列 
    if (a[i] < a[i + 1]) { 
        while (i < n && a[i] <= a[i + 1]) 
	    i++; 

            count++;
             i++; 
	}
	else if (a[i] == a[i + 1]) { 
	    i++; 
	}
	else // 非递增子序列 
	{ 
	    while (i < n && a[i] >= a[i + 1]) 
		i++;
                count++; 
                i++;
		}
    }
    cout << count << endl; 
    system("pause");
    return 0;
}

>>字符串的倒置

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

输入描述:

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

输出描述:

依次输出倒置之后的字符串,以空格分割

示例1:

输入

I like beijing.

输出

beijing. like I

解题思路1:

【解题分析】
本题将一段字符串中的前后单词交换,移单词为单位逆置。
先将整个字符串逆置过来,在遍历字符串,找出每个单词,对单词逆置,这里我们使用了stl算法中的reverse,所以这里使用迭代器遍历string。

 代码实现:

#include <iostream> 
#include <string> 
#include <algorithm> 
using namespace std; 
int main() { 
    string s; 
    // 注意这里要使用getline,cin>>s遇到空格就接收结束了 
    getline(cin, s); 
    // 翻转整个句子 
    reverse(s.begin(), s.end()); 
    // 翻转单词 
    auto start = s.begin(); 
    while (start != s.end()) {    
        auto end = start;     
        while (end != s.end() && *end != ' ')     
            end++; 

        reverse(start, end); 
        if (end != s.end()) 
            start = end + 1; 
        else
            start = end;     
       }    
        cout << s << endl;

        system("pause"); 
        return 0; 
}

解题思路2:

【解题分析】
这是一个比较讨巧的思路,直接利用cin>>s接受输入,遇到空格就结束了,自然就分割开了每个单词,
其次将每次接收到的单词拼接到之前串的前面就可以逆置过来了

代码实现: 

#include <iostream> 
#include <string> 
using namespace std; 
// cin读取string时自动会被空格分隔开,用另一个字符串存储进行逆序输出 
int main() { 
    string s1, s2; 
    cin >> s2; 
    while (cin >> s1) s2 = s1 + " " + s2; 
        cout << s2 << endl; 
    system("pause");
    return 0; 
}

 

 

 

 

~bye~

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C++OJ2】字符串的倒置 &排列子序列 的相关文章

  • 箭头函数()=>{}与function的区别

    1 箭头函数与function定义函数的写法 function function fn a b return a b arrow function var foo a b gt return a b 2 this的指向 使用function
  • uni-app开发总结分享

    目录 一 uni app介绍 二 uni app和vue的具体区别 1 组件 标签的变化 2 js 3 uniapp自带路由和请求方式 三 环境搭建 1 安装HbuilderX 2 创建uni app项目 四 项目目录结构 五 运行uni
  • 安装mysql提示3306端口已经被占用解决方案

    今天遇到的问题是这样的 之前已经安装过mysql了 一直用的好好的 但是今天开启服务时报异常 无法启动 为了省事 于是想到卸载重装 在安装的过程中发现3306已经被占用 这也是一开始服务无法启动的原因 看到有人说用fport查看端口号 于是
  • JSP学生网上选课系统设计(源代码+论文+答辩PPT)

    QQ 19966519194 摘要 随着科学技术的不断提高 计算机科学日渐成熟 其强大的功能已为人们深刻认识 它已进入人类社会的各个领域并发挥着越来越重要的作用 学生选课系统作为一种现代化的教学技术 以越来越受到人民的重视 是一个学校不可缺
  • [Unity][ShaderGraph][FlowCanvas] SetFloat 无效:通过脚本控制 shader 的动态参数时需要使用参数的引用名

    我的 shader 很简单 就是一个 tiling and offset 制作滚动效果 然后我想用一个脚本控制 speed 但是实际运行没有起效果 一开始我看的这个 然后用的 sharedmaterial https forum unity
  • Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装

    Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装 目录 Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装 一 简单介绍 二 ControlNet 插
  • Swift - 将String类型的数字转换成数字类型(支持十进制、十六进制)

    https www cnblogs com Free Thinker p 7243683 html 1 十进制的字符串转成数字 Swift中 如果要把字符串转换成数字类型 比如整型 浮点型等 可以先转成NSString类型 让后再转 1 2
  • JAVA:jdbc:sqlserver 连接SQLserver实例名

    weChatjdbc driverClassName com microsoft sqlserver jdbc SQLServerDriver weChatjdbc url jdbc sqlserver 127 0 0 1 instance
  • Ubuntu服务器下安装FastDFS及nginx配置访问等问题记录

    Ubuntu服务器下安装FastDFS及nginx配置访问 下载对应包 编译环境 包解压环境配置 配置nginx模块和安装nginx来进行访问该图片 下载对应包 下载方式一 直接使用 wget 下载 如果太慢 可以去github下载 然后上
  • 基于Matlab开发的动态机器人轨迹仿真

    基于Matlab开发的动态机器人轨迹仿真 近年来 机器人技术的发展已经进入了高速发展时期 控制与仿真技术作为机器人领域中至关重要的一环 也随之发展壮大 而在动态机器人轨迹仿真方面 Matlab作为一款具备强大数学计算能力的软件 在该领域中得
  • QT实现sqlite数据库连接池

    ifndef CONNECTIONPOOL H define CONNECTIONPOOL H FileName 数据库连接池 Function 获取连接时不需要了解连接的名字 支持多线程 保证获取到的连接一定是没有被其他线程正在使用 按需
  • MySQL 远程登录与其常用命令的介绍

    以下的文章主要介绍的是MySQL 远程登录与其常用命令的介绍 MySQL 远程登录与其常用命令之所以能在很短的时间内被人们广泛的应用 原因也是因为它们的独特功能 以下的文章就有对其相关内容的介绍 MySQL 远程登录及常用命令 第一招 My
  • Unbantu22.04使用DevStack一键部署OpenStack(使用nat静态IP)

    d 学习openstack的小白 第一步就遇到了大麻烦 下载并部署Openstack 传统的基于组件 一个个的安装配置更加麻烦 使用DevStack工具 一键部署可能是个不错的选择 But devstack部署期间总是会出现各种各样的错误
  • JavaScript面向对象

    JavaScript面向对象 面向过程 面向过程就是讲需求一步一步自己完全实现 如 一堆衣服 需要自己一件一件洗 面向对象 面向对象是把有共同特征的方法抽取为类 比如 一堆衣服 都需要洗 创建洗衣机类 女朋友类 让她洗 类的定义和使用 定义
  • 机器学习 day09(如何设置学习率α,特征工程,多项式回归)

    1 常见的错误的学习曲线图 上方两个 当关于迭代次数的学习曲线图 出现波浪型或向上递增型 表示梯度下降算法出错 该情况可由 学习率 过大 或代码有bug导致 2 常用的调试方法 选择一个非常非常小的学习率 来查看学习曲线是否还是有误 即在某
  • uni-app网络请求的封装

    uni app网络请求的封装 这几天没事干 就去小程序开发小团队里看看 顺便看了一下代码 在网络请求上发现了一些问题 差点没忍住破口大骂 最终想了想 他们之前没做过 都是第一次就算了 其实是安慰自己而已 网络请求都写在page里 每个请求都
  • 池化方法总结(Pooling)

    在卷积神经网络中 我们经常会碰到池化操作 而池化层往往在卷积层后面 通过池化来降低卷积层输出的特征向量 同时改善结果 不易出现过拟合 为什么可以通过降低维度呢 因为图像具有一种 静态性 的属性 这也就意味着在一个图像区域有用的特征极有可能在
  • JAVA-while循环语句

    while循环语句用法比for语句用起来简单 格式也对的简单 while 判断条件 循环体 public class WhileTest public static void main String args int i 1 while i

随机推荐

  • 将tensorpack的inference改为pytorch

    最近在跑一个OCR模型 模型是用Tensorpack写的 模型做inference的时候 显存 速度都不是很理想 改成pytorch后 显存占用 速度比之前好了很多 记录下改inference的过程遇到的一些坑 将pb文件转为pth文件 i
  • Python 垃圾回收机制

    众所周知 我们当代的计算机都是图灵机架构 图灵机架构的本质 就是一条无限长的纸带 对应着我们今天的存储器 在工程学的演化中 逐渐出现了寄存器 易失性存储器 内存 和永久性存储器 硬盘 等产品 其实 这本身来自一个矛盾 速度越快的存储器 单位
  • 【易售小程序项目】请求包创建+登录功能实现【基于若依管理系统开发】

    文章目录 说明 请求包创建 创建文件夹 请求工具 request js 登录功能实现 请求方法 页面 涉及知识点 错误提示 前端校验 设置 token 到客户端缓存中 路由跳转 如果已经登录过 访问登录页直接跳转到首页 同项目其他文章 说明
  • 服务器配置填坑 wget: unable to resolve host address解决方法,最终成功

    项目上线 手续要配置服务器 甲方机房在单位内 无法使用公司云服务器 于是配置坑来了 配环境下载包 ubutun 16显示如下错误 wget unable to resolve host address wget 无法解析主机地址 这就能看出
  • 51单片机智能蓝牙小车

    作为大一电子小趴菜 在和队友学习制作蓝牙小车过程中遇到了许多困难 本文既为大家避坑 也作为团队总结 这篇文章分为两部分 1 组装篇 2 代码篇 思维导图 组装篇 先准备好一块电源拓展板 用于为电机驱动模块和降压模块连接电源 小车底盘可淘宝定
  • element ui 表单验证触发方式:trigger: ‘change‘和trigger: ‘blur‘区别

    推荐阅读 Vue2 7正式发布 代号为 Naruto 火影忍者 原生支持 Composition API 终于可以在Vue2项目中使用Vue3的新特性了 真香 南北极之间的博客 CSDN博客今天 Vue 创始人尤雨溪刚刚正式发布了 Vue
  • HTML+CSS+JavaScript复习笔记持更(十)——CSS3常用属性之定位

    定位 定位主要是用来设定元素在页面上的位置的 其代码为 position 定位有三种定位方式 static 无特殊定位 按照dom排序 absolute 绝对定位 往前面找最近的 有定位属性的元素 以该元素的起点为起点 绝对定位 脱离文档流
  • JS中sort()方法原理及使用

    sort 方法用于对数组的元素进行排序 并返回数组 默认排序顺序是根据字符串UniCode码 因为排序是按照字符串UniCode码的顺序进行排序的 所以首先应该把数组元素都转化成字符串 如有必要 以便进行比较 语法 arrayObject
  • 计算机组成原理(1)-软件设计(二十二)

    程序设计语言 软件设计 二十一 https blog csdn net ke1ying article details 129344983 计算机组成原理在软件设计考试分值占比较高 主要会考 1 数据的表示 数据进制转化 日常生活中使用的都
  • MAC 下 OpenCV4 配置 VScode 失败 Xcode 成功记录(2021年12月)

    2022 1 22更新 VScode 设置成功 详情请见 https blog csdn net qq 42067550 article details 122634801 问题描述 安装好了 OpenCV 但是在 VScode 里面花了3
  • 线程的状态及阻塞

    之前提到了线程和进程 那就提一下线程的状态吧 线程状态通常分为五种 New 新建状态 创建线程对象 该线程的生命周期开始 此时该线程已经有了相应的内存空间和其他资源 Runnable 就绪状态 线程对象创建后 调用该线程的start 方法就
  • 去哪儿,模拟登录(扫码登录)

    声明 本文仅限交流学习使用 请勿使用在任何非法商业活动 禁止用于非法用途 否则后果自负 如有侵权 请告知删除 谢谢 一 去哪儿 出行类大厂 为了安全 查询很多信息需要身份校验 有多种登陆方式 1 1 如查询航班信息时 自动弹出登录窗口 会有
  • MySQL常用函数、关键词

    一 关键词 1 unsigned 非负数 定义非负 可以在定义主键的自增列时使用 column name int UNSIGNED AUTO INCREMENT 2 desc 降序 从大到小 asc 或 缺省 为升序 从小到大 和order
  • 微信小程序之地理位置授权 wx.getLocation

    1 授权地理位置 点击按钮 弹出授权弹窗 点击允许后 在以后的操作中可以随时获取到用户地理位置 点击拒绝后 将无法获取到地理位置 也无法再次点击弹出弹窗
  • TortoiseGit使用详解(1)

    一 版本回退和本地分支推送 1 版本回退 假如我们在develop分支上进行开发 当我们想要将代码回退到之前提交的某一版本时 使用TortoiseGit如何进行操作呢 1 第一步 进入工作空间 右键 TortoiseGit Show log
  • Spring知识点小结

    1 Spring是什么 Spring是一个轻量级的IoC和AOP容器框架 目的是用于简化企业应用程序的开发 它使得开发者只需要关心业务需求 常见的配置方式有三种 基于XML的配置 基于注解的配置 基于Java的配置 主要由以下几个模块组成
  • Jemdoc+Github.io +Mac搭建个人学术主页

    一直想做一个个人学术主页 试过Github Pages的各种模版 也用过知乎里一个高票答案Hugo 但总觉得不够简洁 直到遇到Jemdoc 顿觉这才是学术主页该有的样子 作为Web小白 Mac用户 结合网上搜到的零碎的答案 终于捣鼓成功 看
  • Matlab绘制直方图、概率密度函数、累积分布函数

    视频学习 https www bilibili com video BV1HK411T76d from search seid 16338053070486680597 spm id from 333 337 0 0 总结如下 绘制直方图
  • 人工智能数学基础--概率与统计7:学习中一些术语的称呼或表示变化说明以及独立事件的一些补充推论

    一 概念表示变化说明 笔者最开始学习概率论时 是以美版M R 斯皮格尔等著作的 概率与统计 作为教材学习 学习过程中发现部分内容理解困难 之所以这样 一是这本书的内容太古老 教材是2002年翻译出版的 二是部分内容翻译不是很好 后来感谢AI
  • 【C++OJ2】字符串的倒置 &排列子序列

    愿我们 都能成为可爱又有趣的大人呀 目录 每日总结 排序子序列 字符串的倒置 gt gt 1 每日总结 当一个类对象的生命周期结束后 关于调用析构函数 先调用派生类的析构函数 后调用基类的析构函数 关于一个类的静态成员描述 该类的静态成员变