每日一练2——C++排序子序列问题倒置字符串问题

news2024/9/22 11:34:31

文章目录

  • 排序子序列问题
    • 思路:
    • 代码:
  • 倒置字符串
    • 思路:
      • 方法一:
      • 代码:
      • 方法二:
      • 代码:


排序子序列问题

题目链接
这道题题意不难理解,但是想写对还是有很多细节的。
本题要求解的是排序子序列,排序子序列为非递增或者非递减,非递减就是a[i]<=a[i+1],递减就是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带来的影响,我们分为三种情况讨论:

  1. 若到a[n-1] 的最后一组是非递减序列,当i==n-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入条件已经说明了(去看看题目输入条件描述),里面的循环结束,i++,count++,i ==n,外面的循环结束。
  2. 若到a[n-1] 的最后一组是非递增序列,当i== n-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入条件已经说明了(去看看题目输入条件描述),循环再走一次,i++, i== n,里面的循环结束,i++,count++,i==n+1,外面的循环结束。
  3. 第三种情况 1 2 1 2 1最后一个数是单独的情况,后面补个0,序列变成1 2 1 2 1 0,当走完全面的序列i== n-1时,a[i] > a[i+1],这样会判断出一个非递增序列,count++,i++, i== n 外面的循环结束。

也就是说数组最后一个位置多增加一个0,不会影响第1、2情况的判断,主要是帮助第3情况的正确判断。

代码:

#include<iostream>
#include<vector>

using namespace std;
int main() {
	int num = 0;
	cin >> num;
	vector<int> v;
	v.resize(num + 1);
	v[num] = 0;

	for (int i = 0; i < num; i++)
	{
		cin >> v[i];
	}


	int count = 0;
	int j = 0;

	while (j<num)
	{
		if (v[j] < v[j + 1])
		{
			while (j<num&&v[j]<=v[j+1])
			{
				j++;
			}
			count++;
			j++;
		}
		else if(v[j]==v[j+1])
		{
			j++;
		}
		else
		{
			while (j < num && v[j] >= v[j + 1])
			{
				j++;
			}
			count++;
			j++;
		}
	}
	
	cout << count << endl;
	return 0;
}

倒置字符串

题目链接

思路:

方法一:

先创建一个两个string类分别命名为str和temp,用getline把一行输入到str中,然后倒着遍历str,遇到空格就将空格之后的字符串整体尾插到temp中,然后再把刚才空格之后的字符串从str中删去,直到遍历到str的下标为0位置处停止。
但是这样会少了开头的一串字符串
例如:I like beijing.
在这里插入图片描述

倒着遍历的话I前面可没有空格,而且已经倒履str下标为0的位置处了,退出while循环,所以下面还要把第一个空格之前的字符串补回来即可。

代码:

#include<iostream>
#include <string>
using namespace std;
int main() 
{
    string str;
//std::getline(cin,str);
    std::getline(std::cin, str);
    string temp;
    for (int i = str.size() - 1; i >= 0; i--) 
    {
        if (str[i] == ' ') 
        {
            temp.append(str, i + 1);
            temp += ' ';
            str.erase(i);
        }
    }
    
    temp.append(str);//把第一个空格之前的字符串补回来
    
    cout << temp;
    return 0;
}

方法二:

第二思路是一个比较取巧的思路,直接利用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;
	return 0;
}

end

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

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

相关文章

python之正则表达式【简化版】

大家好&#xff0c;我们今天说一说正则表达式&#xff0c;在之前我们也介绍了关于正则表达式&#xff0c;今天&#xff0c;我们来深入的了解一下。我们知道正则表达式是处理字符串的强大工具&#xff0c;它有自己的语法结构&#xff0c;什么匹配啊&#xff0c;都不算什么。 正…

JavaIO流:BIO梳理

BIO&#xff08;blocking I/O&#xff09; &#xff1a; 同步阻塞&#xff0c;服务器实现模式为一个连接一个线程&#xff0c;即客户端有连接请求时服务器端就需要启动一个线程进行处理&#xff0c;如果这个连接不做任何事情会造成不必要的线程开销&#xff0c;可以通过线程池机…

Java8新特性 Stream流

Stream流 在Java 8中&#xff0c;得益于Lambda所带来的函数式编程&#xff0c;引入了一个全新的Stream概念&#xff0c;用于解决已有集合类库既有的弊端。 传统集合的多步遍历代码几乎所有的集合&#xff08;如 Collection 接口或 Map 接口等&#xff09;都支持直接或间接的遍…

我这样写代码,比直接使用 MyBatis 效率提高了 100 倍

对一个 Java 后端程序员来说&#xff0c;mybatis、hibernate、data-jdbc 等都是我们常用的 ORM 框架。它们有时候很好用&#xff0c;比如简单的 CRUD&#xff0c;事务的支持都非常棒。但有时候用起来也非常繁琐&#xff0c;比如接下来我们要聊到的一个常见的开发需求&#xff0…

【知识图谱论文】调整元知识图信息以在少样本关系上进行多跳推理

文章题目&#xff1a;Adapting Meta Knowledge Graph Information for Multi-Hop Reasoning over Few-Shot Relations时间&#xff1a;2019 摘要 多跳知识图 (KG) 推理是一种有效且可解释的方法&#xff0c;用于在查询回答 (QA) 任务中通过推理路径预测目标实体。 大多数以前…

做交互设计都有哪些需要掌握的思维方式

由于目前的环境对这个细分领域仍然缺乏了解&#xff0c;我希望在这篇文章中写一些交互设计所需的思维方式。 ​ 1.可用性优先&#xff0c;视觉靠边 一个功能个功能应该能够使用和使用&#xff0c;以便有人关心它是否好看。审美挑剔的用户实际上比你想象的要少得多。当然&#…

机械工程基础知识点汇总

第一章 常用机构 一、零件、构件、部件 零件&#xff0c;是指机器中每一个最基本的制造单元体。 在机器中&#xff0c;由一个或几个零件所构成的运动单元体&#xff0c;称为构件。 部件&#xff0c;指机器中由若干零件所组成的装配单元体。 二、机器、机构、机械 机器具有以下特…

智能捡乒乓球机器人

本文素材来源于物理与电子电气工程学院 作者&#xff1a;丁文龙 、王小军、任剑杰、张钊铭 指导老师&#xff1a;康彩 一、项目简介 随着人们对机器人技术智能化本质认识的加深&#xff0c;机器人技术开始源源不断地向人类活动的各个领域渗透。在这其中&#xff0c;服务机器人…

数字图像处理(十二)最大熵算法

文章目录前言一、熵是什么&#xff1f;1.信息量如何计算&#xff1f;2.熵如何计算&#xff1f;二、最大熵方法1.设计思想2.算法步骤3.C代码4.实验结果参考资料前言 在图像分析中&#xff0c;通常需要将所关心的目标从图像中提取出来&#xff0c;这种从图像中某个特定区域与其他…

JAVA中的集合类型的理解及应用

目录 概述 List和Queue Map和Set HashTable和HashMap的区别 Queue和Deque BlockingQueue 并发集合 概述 写程序免不了处理一些批量数据&#xff0c;不同数据结构和算法&#xff0c;会带来不同的性能效果。大学的计算机课程中就有一门叫《数据结构》的课程&#xff0c;这门…

总结我的 MySQL 学习历程,给有需要的人看

作者| 慕课网精英讲师 马听 你好&#xff0c;我是马听&#xff0c;现在是某零售公司的 MySQL DBA&#xff0c;身处一线的我表示有很多话要讲。 我的MySQL学习历程 在我大三的时候&#xff0c;就开始接触到 MySQL 了&#xff0c;当时我也是从最基础的 MySQL 知识&#xff08;…

6、项目第六阶段——用户名登录显示和注册验证码

第六阶段——用户名登录显示和注册验证码 1、登陆—显示用户名 UserServlet 程序中保存用户登录的信息 UserServlet程序中&#xff1a; //保存用户登录信息到Session域中 req.getSession().setAttribute("user",loginUser);修改 login_succuess_menu.jsp&#xf…

2019 国际大学生程序设计竞赛(ICPC)亚洲区域赛(银川) 7题

文章目录N.Fibonacci SequenceB.So EasyI.Base62G.Pot!!F.Function!K.Largest Common Submatrix补题链接&#xff1a;https://codeforces.com/gym/104021 难得VP打出这么好的成绩&#xff0c;虽然是有争议的西部枢纽银川站&#xff0c;虽然没能早生几年。。。。 N.Fibonacci Se…

【数据结构】基础:堆

【数据结构】基础&#xff1a;堆 摘要&#xff1a;本文主要介绍数据结构堆&#xff0c;分别介绍其概念、实现和应用。 文章目录【数据结构】基础&#xff1a;堆一、概述1.1 概念1.2 性质二、实现2.1 定义2.2 初始化与销毁2.3 入堆2.4 出堆2.5 堆的创建2.6 其他三、应用3.1 堆排…

《前端》css总结(下)

文章目录元素展示格式displaywhite-spacetext-overflowoverflow内边距和外边距marginpadding盒子模型box-sizing位置position&#xff1a;用于指定一个元素在文档中的定位方式浮动flex布局flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-contentorderflex-g…

你最少用几行代码实现深拷贝?

问题分析 深拷贝 自然是 相对 浅拷贝 而言的。 我们都知道 引用数据类型 变量存储的是数据的引用&#xff0c;就是一个指向内存空间的指针&#xff0c; 所以如果我们像赋值简单数据类型那样的方式赋值的话&#xff0c;其实只能复制一个指针引用&#xff0c;并没有实现真正的数…

计算机组成原理4小时速成:存储器,内存ROM,RAM,Cache,高速缓存cache,外存,缓存命中率,效率

计算机组成原理4小时速成&#xff1a;存储器&#xff0c;内存ROM,RAM,Cache&#xff0c;高速缓存cache&#xff0c;外存&#xff0c;缓存命中率&#xff0c;效率 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法…

MYSQL事务原理分析

目录事务是什么ACID特性原子性&#xff08;A&#xff09;隔离性&#xff08;I&#xff09;持久性&#xff08;D&#xff09;一致性&#xff08;C&#xff09;隔离级别简介有些什么READ UNCOMMITTED&#xff08;读未提交&#xff09;READ COMMITTED&#xff08;读已提交&#xf…

【17】Java常见的面试题汇总(设计模式)

目录 1. 说一下你熟悉的设计模式&#xff1f; 2. 简单工厂和抽象工厂有什么区别&#xff1f; 1. 说一下你熟悉的设计模式&#xff1f; 单例模式&#xff1a;保证被创建一次&#xff0c;节省系统开销。 工厂模式&#xff08;简单工厂、抽象工厂&#xff09;&#xff1a;解耦…

力扣(LeetCode)60. 排列序列(C++)

枚举 枚举每一位可能的数字。 如图。算法流程如上图。 思路分析 : 一个数 nnn &#xff0c;可以组成的排列数量有 n!n!n! 。当首位确定&#xff0c;剩余位能组成的排列数量 (n−1)!(n-1)!(n−1)! &#xff0c;依次类推 (n−2)!/(n−3)!/(n−4)!/…/2!/1!/0!(n-2)!/(n-3)!/(n…