【笔试常见编程题01】删除公共字符串、组队竞赛、倒置字符串、排序子序列

在这里插入图片描述

1. 删除公共字符串

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
输入描述
每个测试输入包含2个字符串
输出描述
输出删除后的字符串
示例 1
输入
They are students.
aeiou
输出
Thy r stdnts.

思路1:

  1. 遍历第二个字符串
  2. 在第一个字符串中找到
    跟第二个字符串相同的字符并逐一删除
int main() {string one, two;// cin遇到空格读取结束,所以用getline读取字符串里的空格getline(cin, one);getline(cin, two);for (int i = 0; i < two.size(); i++) {while (one.find(two[i]) != -1) // find失败返回值为-1one.erase(one.find(two[i]), 1);}cout << one;return 0;
}

思路2:

  1. 将第二个字符串的所有字符映射到哈希表
  2. 定义一个string
  3. 遍历第一个字符串
    并在哈希表对应位置查找有无此字符
    该位置为0说明第二个字符串无此字符
    在新定义的string添加该字符即可
int main() {string one, two;getline(cin, one);getline(cin, two);int hashtable[256]={0}; // 哈希映射for(size_t i = 0; i < two.length(); i++){hashtable[two[i]]++; // 将第二个字符串中的字符映射到哈希表}string s;for(size_t i = 0; i < one.length(); i++){if(hashtable[one[i]] == 0){s += one[i];}}cout << s;return 0;
}

2. 组队竞赛

牛牛举办了一次编程比赛,参加比赛的有3n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
例如:
一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3
一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3
一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2
为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。
如样例所示:
如果牛牛把6个队员划分到两个队伍
如果方案为:
team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.
而如果方案为:
team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.
没有比总和为10更大的方案,所以输出10.
输入描述
输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
第二行包括3
n个整数a_i(1 ≤ a_i ≤ 10^9),表示每个参赛选手的水平值.
输出描述
输出一个整数表示所有队伍的水平值总和最大值.
示例 1
输入
2
5 2 8 5 1 5
输出
10

思路1:
用两大带一小的取法
可以保留次大的数据
从而提高队伍水平值
使水平值总和最大化
在这里插入图片描述

  1. 将3n个数据排序
  2. 从n+1个数隔1取1

在这里插入图片描述

int main() {int n = 0;cin >> n;vector<int> v;v.resize(3 * n);// 输入3*n个元素放入vectorfor (int i = 0; i < v.size(); i++){cin >> v[i];}// 排序sort(v.begin(), v.end());// tail指向n的位置每次+=2,front指向n-1的位置每次--vector<int> tmp;long long max = 0;for (int front = n-1, tail = n; tail < v.size(); tail += 2){max += v[tail];}cout << max;return 0;
}

3. 倒置字符串

将一句话的单词进行倒置,标点不倒置
比如 “I like beijing.”,经过处理后变为:“beijing. like I”。
字符串长度不超过100。
输入描述
输入一个仅包含小写字母、空格、‘.’ 的字符串,长度不超过100。
‘.’ 只出现在最后一个单词的末尾。
输出描述
依次输出倒置之后的字符串,以空格分割。
示例 1
输入
I like beijing.
输出
beijing. like I

思路1:

  1. 遍历字符串找到空格下标
  2. 通过找到的区间构建一个string插入vector
  3. 逆置输出vector
int main() {string s;getline(cin, s);vector<string> v;size_t sub = 0;for (int i = 0; i < s.size(); i++){// 找空格所在下标while (s[sub] != ' ' && (s.begin() + sub) != s.end()){sub++;}string tmp(s, i, sub-i);v.push_back(tmp);i = sub;sub++;}auto it = v.rbegin();while (it != v.rend()){cout << *it << " ";it++;}return 0;
}

思路2:

  1. 整体逆置
  2. 单词逆置

在这里插入图片描述

int main()
{string s;getline(cin, s);// 整体逆置reverse(s.begin(), s.end());auto it = s.begin();auto blank = s.begin();while (it != s.end()){while (blank != s.end() && *blank != ' '){blank++;}//局部单词逆置reverse(it, blank);if (blank != s.end())blank++;it = blank;}cout << s << endl;return 0;
}

思路3:

  1. 只可意会不可言传
    请自行画图理解
int main()
{string s1, s2;cin >> s1;while (cin >> s2)s1 = s2  + " " + s1;cout << s1 << endl;return 0;
}

4. 排序子序列

牛牛定义排序子序列为一个数组中一段连续的子序列,这段子序列是非递增或者非递减排序的。
牛牛有一个长度为 n 的整数数组 a,他现在需要把数组 a 分为若干段排序子序列,牛牛想知道最少可以把这个数组分为几段排序子序列。
输入描述
第一行输入一个正整数 n。
第二行输入 n 个正整数 a_i,表示数组的每个数。
1 <= n <= 10^5
1 <= a_i <= 10 ^ 9
输出描述
输出一个整数,可以将 a 最少划分为多少段排序子序列。
示例 1
输入
6
1 2 3 2 2 1
输出
2
说明
可以把划分为[1,2,3]和[2,2,1]两个排序子序列。

  1. 开始遍历数组,判断后一个数是否大于当前数
    如果大于进入非递减序列
    如果小于或等于进入非递增序列
int main() {int n = 0;cin >> n;vector<int> v;v.resize(n);for (int i = 0; i < n; i++) {cin >> v[i];}int count = 0;for (int i = 0; i < v.size(); i++) {if (i == v.size() - 1) // 当走到只剩最后一个元素的时候{count++;break;}     while (i + 1 != v.size() && v[i + 1] == v[i]){i++; // 刚开始遇到前后一样的元素直接++// 因为不知道后面遇到的元素是非递增还是非递减continue;}if (v[i + 1] > v[i]){while (i + 1 != v.size() && v[i + 1] >= v[i])i++;count++;// 此时i指向非递减区间最后一个元素的下标continue; // 需要跳出此次循环++到下一个非递增的第一个元素}if (v[i + 1] < v[i]){while (i + 1 != v.size() && v[i + 1] <= v[i])i++;count++;}}cout << count;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV 0 - VS2019配置OpenCV

1 配置好环境变量 根据自己的opencv的安装目录配置 2 新建一个空项目 3 打开 视图->工具栏->属性管理器 4 添加新项目属性表 右键项目名(我这是opencvdemo)添加新项目属性表,如果有配置好了的属性表选添加现有属性表 5 双击选中Debug|x64的刚添加的属性表 6 (重点)添…

Vue3 Teleport 将组件传送到外层DOM位置

✨ 专栏介绍 在当今Web开发领域中&#xff0c;构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架&#xff0c;正是为了满足这些需求而诞生。它采用了MVVM架构模式&#xff0c;并通过数据驱动和组件化的方式&#xff0c;使…

nginx反向代理负载均衡

一&#xff0c;kali作为负载服务器 打开kali nginx服务&#xff0c;访问页面如下 使用docker拉取nginx&#xff0c;并做出端口映射 ┌──(root?kali)-[/etc/nginx] └─# docker pull nginx ┌──(root㉿kali)-[/etc/nginx] └─# docker run -p 11111:80 --name Jdr -d ng…

Type-C平板接口协议芯片介绍,实现单C口充放电功能

在现代平板电脑中&#xff0c;Type-C接口已经成为了一个非常常见的接口类型。相比于传统的USB接口&#xff0c;Type-C接口具有更小的体积、更快的传输速度和更方便的插拔体验。但是&#xff0c;在使用Type-C接口的平板电脑上&#xff0c;如何实现单C口充电、放电和USB2.0数据传…

首发:2024全球DAO组织发展研究

作者&#xff0c;张群&#xff08;专注DAO及区块链应用研究&#xff0c;赛联区块链教育首席讲师&#xff0c;工信部赛迪特邀资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09; DAO&#xff08;去中心化自治组织&am…

HCS 华为云Stack产品组件

HCS 华为云Stack产品组件 Cloud Provisioning Service(CPS) 负责laas的云平台层的部署和升级是laas层中真正面向硬件设备&#xff0c;并将其池化软件化的部件。 Service OM 资源池(计算/存储/网络)以及基础云服务(ECS/EVS/PC)的管理工具。 ManageOne ManageOne包括服务中心…

【MySQL】学习如何通过DML更新数据库的数据

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-QIqURn9fNFMjLD9l {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

【MIdjourney】五个特殊物体关键词

1.碳酸(Carbonate) 这一词语的本意是指包含碳&#xff08;C&#xff09;、氧&#xff08;O&#xff09;和氢&#xff08;H&#xff09;元素的化合物。而在MIdjourney中添加该词汇会使得生成的图片具有水滴效果且富有动态感。 2.灯丝(Filament) Filament效果可能包括更逼真的…

Unity 光照

光照烘培 光照模式切换为 Baked 或 Mixed&#xff0c;Baked 模式完全使用光照贴图模拟光照&#xff0c;运行时修改光照颜色不生效&#xff0c;Mixed 模式也使用光照贴图&#xff0c;并且进行一些实时运算&#xff0c;运行时修改光照颜色会生效 受光照影响的物体勾选 Contribute…

基于DataKit迁移MySQL到openGauss

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Python Flask与APScheduler构建简易任务监控

1. Flask Web Flask诞生于2010年&#xff0c;是用Python语言&#xff0c;基于Werkzeug工具箱编写的轻量级、灵活的Web开发框架&#xff0c;非常适合初学者或小型到中型的 Web 项目。 Flask本身相当于一个内核&#xff0c;其他几乎所有的功能都要用到扩展&#xff08;邮件扩展…

用友U8接口-部署和简要说明(1)

概括 本专栏文章目的说明对目前用友U8ERP接口介绍对底层接口二次封装的介绍 说明 过去发布过介绍U8接口文章简介&#xff0c;参考以下链接。 U8接口开发方式 本专栏文章与下面的HTTP接口相辅相成&#xff0c;主要是写给正在使用&#xff0c;或未来使用本套接口的开发人员&am…

推荐一款视频ZeVideo开源主题源码-Typecho主题

ZeVideo最为一款免费开源的视频主题&#xff0c;本次更新我们重构了代码结构 演示地 址 &#xff1a; runruncode.com/portal/article/index/id/19684/cid/79.html 全站pjax无刷新加载&#xff0c;支持根据系统进入深色模式&#xff0c;或手动切换&#xff0c;支持记录播放历…

【word】论文、报告:①插入图表题注,交叉引用②快速插入图表目录③删改后一键更新

【word】①插入图表题注&#xff0c;②删改后一键更新 写在最前面插入题注交叉引用修改插入题注的文字格式快速插入图表目录 插入题注后有删改&#xff0c;实现编号一键更新 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你…

按配置数据绘制配置型地图marker的icon,自定义marker

一、需求 需要自定义配置数据的marker&#xff0c;其中图片内容要灵活可配置自动生成。此处项目用的百度地图。 效果图&#xff1a; 二、思路 用背景图canvas绘制数字的方式生成icon的图片资源。 再将icon生成对应地图marker。 三、代码 canvasImg.js <!-- * descrip…

Pytest 识别case规则

一、Python测试框架&#xff0c;主要特点有以下几点&#xff1a; 简单灵活&#xff0c;容易上手&#xff1b;支持参数化&#xff1b;能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来做selenium/appnium等自动化测试、接口自动化测试&#xff08;pytestrequests…

《Vue3 基础知识》 Vue2+ElementUI 自动转 Vue3+ElementPlus(GoGoCode)

前言 GoGoCode 一个基于 AST 的 JavaScript/Typescript/HTML 代码转换工具。 AST abstract syntax code 抽象语法树。 实现 第一步&#xff1a;安装 GoGoCode 插件 全局安装最新的 gogocode-cli 即可 npm i gogocode-cli -g查看版本 gogocode-cli -V相关插件说明 插件描述…

webassembly003 whisper.cpp的python绑定实现+Cython+Setuptools

python绑定项目 官方未提供python的封装绑定&#xff0c;直接调用执行文件 https://github.com/stlukey/whispercpp.py提供了源码和Cpython结合的绑定 https://github.com/zhujun1980/whispercpp_py提供了ctype方式的绑定&#xff0c;需要先make libwhisper.so Pybind11 bi…

React中使用LazyBuilder实现页面懒加载方法二

前言&#xff1a; 在一个表格中&#xff0c;需要展示100条数据&#xff0c;当每条数据里面需要承载的内容很多&#xff0c;需要渲染的元素也很多的时候&#xff0c;容易造成页面加载的速度很慢&#xff0c;不能给用户提供很好的体验时&#xff0c;懒加载是优化页面加载速度的方…

mysql 基础(三)

一、多表设计 数据库设计范式 第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值&#xff0c;就说明该数据库表满足了第一范式。第二范式就是要有主键&#xff0c;要求其他字段都依赖于主键。 没有主键就没有唯一性&…