【笔试常见编程题02】字符串中找出连续最长的数字串、数组中出现次数超过一半的数字、计算糖果、进制转换

在这里插入图片描述

1. 字符串中找出连续最长的数字串

读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述
个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述
在一行内输出str中里连续最长的数字串。
示例 1
输入
abcd12345ed125ss123456789
输出
123456789

思路1:

  1. 定义两个string,longfig和temp
  2. temp获取数字字符串,longfig保留最长数字字符串
    如果temp比longfig长,把temp赋值给longfig,temp置空
int main() {string s, longfig, temp; // longfig用来保存最长数字字符串getline(cin, s); for (int i = 0; i < s.size(); i++) // 遍历输入的字符串{while (s[i] - '0' >= 0 && s[i] - '0' <= 9) // 如果为数字,保存到temp{temp += s[i];i++;}if (temp.size() > longfig.size()) // 如果temp比longfig长,则把temp赋值给longfiglongfig = temp;temp = "";}cout << longfig;return 0;
}

2. 数组中出现次数超过一半的数字

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
数据范围:,数组中元素的值
要求:空间复杂度:,时间复杂度
示例 1
输入
[1,2,3,2,2,2,5,4,2]
输出
2
示例 2
输入
[3,3,3,3,2,2,2]
输出
3
示例 3
输入
[1]
输出
1

思路1:

  1. 排序数组
    数字出现次数超过数组长度的一半
    中间那个数一定是最长数组
class Solution {
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {sort(numbers.begin(), numbers.end());return numbers[numbers.size() / 2];}
};

思路2:

  1. 遍历一遍数组
  2. 在map中存每个元素出现的次数
    然后再遍历一次数组,找出众数
class Solution {
public:int MoreThanHalfNum_Solution(vector<int> numbers) {unordered_map<int,int> mp;for (const int val : numbers) ++mp[val];for (const int val : numbers) {if (mp[val] > numbers.size() / 2 ) return val;}return 0;}
};

思路3:(最优解)时间和空间复杂度:O(n),O(1)
如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数

  1. 初始化:候选人cond = -1, 候选人的投票次数cnt = 0
  2. 遍历数组,如果cnt=0, 表示没有候选人,则选取当前数为候选人,++cnt
  3. 否则,如果cnt > 0, 表示有候选人,如果当前数=cond,则++cnt,否则–cnt
  4. 直到数组遍历完毕,最后检查cond是否为众数
class Solution {
public:int MoreThanHalfNum_Solution(vector<int> numbers) {int cond = -1;int cnt = 0;for (int i=0; i<numbers.size(); ++i) {if (cnt == 0) {cond = numbers[i];++cnt;}else {if (cond == numbers[i]) ++cnt;else --cnt;}}cnt = 0;for (const int k :numbers) {if (cond == k) ++cnt;}if (cnt > numbers.size() / 2) return cond;return 0;}
};

3. 计算糖果

A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。
输入描述
输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。
输出描述
输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No
示例 1
输入
1 -2 3 4
输出
2 1 3

思路1:

  1. (整数1 + 整数3) / 2 = A
  2. (整数2 + 整数4) / 2 = B
  3. B - 整数2 = C
int main() {vector<int> v;int a, b, c;v.resize(4);for (int i = 0; i < 4; i++)cin >> v[i];a = (v[0] + v[2]) / 2;b = (v[1] + v[3]) / 2;c = b - v[1];if (a-b == v[0] && b-c == v[1] && a+b == v[2] && b+c == v[3])cout << a << " " << b << " " << c;else cout << "No";return 0;
}

4. 进制转换

给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例 1
输入
7 2
输出
111

思路1:

  1. 十进制转任何其他进制都可以用
    十进制数取模需要转换的进制(转二进制就取模二)
    取模的结果记录下来
  2. 十进制数除以需要转换的进制,所得的结果继续取模
  3. 直到十进制数为0,逆置所有取模的结果就是需要转换的进制

本题需要注意的是十进制数可能为0
和负数的情况,需要特殊处理

void TenScaleConvertOther(int M, int N, string& s) // 十进制转其他进制函数
{char figure[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };while (M) {s.push_back(figure[M % N]);M = M / N;}
}int main() {int M, N;cin >> M >> N;string s;if (M == 0) // 需要考虑M为0的情况s.push_back('0');TenScaleConvertOther(abs(M), N, s); // M可能为负数, 传绝对值过去reverse(s.begin(), s.end());if (M < 0)cout << '-' << s;else cout << s;   return 0;
}

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

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

相关文章

java数据结构与算法刷题-----LeetCode328. 奇偶链表

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 将链表按奇偶顺序&#xff0c;分成两个链表。最后将偶数链表放在…

(每日持续更新)jdk api之InterruptedIOException基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿,每天都会整理到12点,为了就是能让大家能够真…

Python无人诊断治疗全套系统

Python无人诊断治疗全套系统的研发开发对于医疗行业具有重要性。以下是其重要性的几个方面&#xff1a; 提高诊断精确性&#xff1a;无人诊断系统利用大数据分析和人工智能技术&#xff0c;能够通过对病例的分析和比对&#xff0c;提供更准确的诊断结果。相比于传统的人工诊断&…

LeetCode第500题 - 键盘行

题目 给定一个单词列表&#xff0c;只返回可以使用在键盘同一行的字母打印出来的单词。 示例&#xff1a; 输入: [“Hello”, “Alaska”, “Dad”, “Peace”] 输出: [“Alaska”, “Dad”] 解答 class Solution {public String[] findWords(String[] words) {char[][] keybo…

计算机网络-编制与调制(基带信号 基带传输 宽度信号 宽度传输 编码 调制 )

文章目录 基带信号与宽带信号编码与调制数字数据编码为数字信号数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号小结 基带信号与宽带信号 信道上传输的信号除了可以分为数字信号和模拟信号&#xff0c;也可以分为基带信号和宽带信号&#xff0c;只是分类…

【每日一题】最大合金数

文章目录 Tag题目来源解题思路方法一&#xff1a;二分枚举答案 写在最后 Tag 【二分枚举答案】【数组】【2024-01-27】 题目来源 2861. 最大合金数 解题思路 方法一&#xff1a;二分枚举答案 思路 如果我们可以制造 x 块合金&#xff0c;那么一定也可以制造 x-1 块合金。于…

【Spring Boot 3】【@Scheduled】动态修改定时任务时间

【Spring Boot 3】【@Scheduled】动态修改定时任务时间 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习…

Hadoop-MapReduce-源码跟读-客户端篇

一、源码下载 下面是hadoop官方源码下载地址&#xff0c;我下载的是hadoop-3.2.4&#xff0c;那就一起来看下吧 Index of /dist/hadoop/core 二、从WordCount进入源码 用idea将源码加载进来后&#xff0c;找到org.apache.hadoop.examples.WordCount类&#xff08;快捷方法&…

支持下一代网络IpV6的串口服务器,IpV6串口485接口转网口

和IPv4比较&#xff0c;IPv6有两个极具吸引力的特点&#xff1a;一个是IPv6采用的128位地址格式&#xff0c;而IPv4采用32位的地址格式&#xff0c;因此IPv6使地址空间增大了296&#xff1b;另一个是IPv6物联网数据业务具有更强的支持能力&#xff0c;成为未来物联网的重要协议…

Kafka消息流转的挑战与对策:消息丢失与重复消费问题

消息丢失和重复消费时分布式系统重的常见问题&#xff0c;如果处理不好会对业务造成很大的影响。比如用户下单是通过消息队列处理的&#xff0c;对于用户的订单来说&#xff0c;消息丢失会造成用户下单丢失&#xff0c;影响售卖&#xff0c;如果重复消费&#xff0c;可能会生成…

Ps:创建基于饱和度的蒙版

能够区分图像上哪些区域的饱和度高&#xff0c;哪些区域的饱和度低&#xff0c;在调色过程中是相当有用的。 比如&#xff0c;使得饱和度高的区域更加饱和&#xff0c;可增加图像色彩反差&#xff0c;让画面更引人注目。 或者&#xff0c;使得饱和度区域趋于饱和&#xff0c;让…

技术书评和笔记【01】脑机接口-电路与系统 【2020版】

前言: 荷兰作者,Amir Zjajo博士,毕业于荷兰代尔夫特理工大学,方向 面向移动健康的低功耗混合型号电路与系统,以及,面向认知的神经形态电路。 ,脑机接口 - 电路与系统一书,系统介绍了,脑机接口电路与系统的实现技术,尤其,提到了量产和设计的问题,难能可贵,摘录如…

JVM篇----第九篇

系列文章目录 文章目录 系列文章目录前言一、分代收集算法二、新生代与复制算法三、老年代与标记复制算法前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、分代…

MySQL-删除重复数据

在实际应用中&#xff0c;遇到一个这样的问题&#xff0c;MySQL中存储的数据为资讯类数据&#xff0c;在页面展示时会出现多个平台的新闻报导相同的内容&#xff0c;导致页面会出现重复数据。因为数据是每天定期更新&#xff0c;所以最快捷有效的方式是在更新完数据后增加一个去…

3、创建特性(Creating Features)

使用Pandas转换特性以适合您的模型。 文章目录 1、简介2、数学变换3、计数4、构建和分解特征5、分组转换1、简介 一旦你确定了一组有潜力的特性,就可以开始开发它们了。在这节课中,你将学习如何在Pandas中进行一些常见的转换。如果你对Pandas不熟练, 请参考《从零开始的Pand…

YOLOv8融合改进 更换检测头同时改进C2f模块

一、Detect_DyHead检测头和C2f-EMSC,C2f-EMSCP模块 详细介绍和代码在往期的博客里: Detect_DyHead: (YOLOv8改进检测头Detect为Detect_Dyhead-CSDN博客) C2f-EMSC和C2f-EMSCP: (YOLOv8改进之多尺度转换模块C2f-EMSC和C2f-EMSCP-CSDN博客) 二、算法实现 1、将检测…

QT之 QDebug 调试(一)

在QT中&#xff0c;进行调试&#xff0c;则需要在头文件地方加上 #include <QDebug> 加上之后&#xff0c;在编译之后则其输出的信息则在应用程序输出那里显示信息。 其QDebug 信息调试则如&#xff1a; qDebug() << " 需要插入的信息 "…

RPC教程 7.服务发现与注册中心

0.前言 这一节的内容只能解决只有一个服务的情况。要是有多个服务(即是多个结构体&#xff09;这种就解决不了&#xff0c;也即是没有服务ip地址和服务实例的映射关系。 1.为什么需要注册中心 在上一节中&#xff0c;客户端想要找到服务实例的ip,需要硬编码把ip写到代码中。…

猿媛员的专属春联来咯

我们“因程序汇聚&#xff0c;因猿份相识”&#xff0c;今天来给辛苦了一年的“猿媛员”们送上几幅恶搞对联&#xff0c;为图一笑 &#x1f604; 闲言少叙&#xff0c;上对联 龙行多福 上联&#xff1a;龙龙龙龙龙龙龙 下联&#xff1a;福福福福福福福 形象版 上联&#…

centos 7安装MySQl

本文参考借鉴&#xff1a;https://cloud.tencent.com/developer/article/2353312&#xff0c;非常赞&#xff01; 为了避免权限不足的问题&#xff0c;建议切换至root用户进行安装 1.MySQL的清理与安装 查看是否存在MySQL服务 安装mysql之前&#xff0c;需要先看看要安装系…