【华为上机真题 2022】消消乐游戏

news/2024/11/8 22:36:25/

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、题目描述

1.1 输入描述

1.2 输出描述

1.3 测试样例

1.3.1 示例 1

1.3.2 示例 2

二、解题思路

三、代码实现

四、时间复杂度


一、题目描述

游戏规则:输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。

在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。

请输出最终得到的字符串长度。

1.1 输入描述

输入原始字符串 str,只能包含大小写因为字母,字母大小写敏感,str 长度不超过 100。

1.2 输出描述

输出游戏结束后,最终得到的字符串长度。

1.3 测试样例

1.3.1 示例 1

输入

gg

输出

0

说明

gg 可以直接消除,得到空串,长度为 0。

1.3.2 示例 2

输入

mMbccbc

输出

3

说明:在 mMbccbc 中,可以先消除 cc,得到 mMbbc;再消除 bb,得到 mMc。此时无法再消除,最终长度为3

备注:输入中包含非大小写英文字母时,均为异常输入,直接返回 0。

二、解题思路

本文实际考查的是双向链表的删除。算法步骤如下所示:

(1)首先,将字符串转化为双向链表存储;

(2)然后遍历字符串,如果当前字符和前一个字符相同,则删除这两个字符,删除后重新连接双向链表;

(3)继续处理下一个元素,直到处理到最后一个元素。

三、代码实现

代码实现如下所示。

#include <iostream>
#include <list>
using namespace std;struct Node {char value;struct Node* pre;struct Node* next;Node():value(' '),pre(nullptr),next(nullptr){}Node(char val):value(val),pre(nullptr),next(nullptr){}
};int main()
{string str;while (cin>>str) {int n = str.size();Node* head = new Node;Node* pre = head;for (int i = 0; i < n; ++i) {Node* tmp = new Node(str[i]);tmp->pre = pre;pre->next = tmp;pre = tmp;}Node* p = head->next;while (p) {if (p->pre->value == p->value) {p->pre->pre->next = p->next;if (p->next) {p->next->pre = p->pre->pre;} else {break;}}p = p->next;}p = head->next;int num = 0;while (p) {num++;p = p->next;}cout<<num<<endl;}return 0;
}

四、时间复杂度

时间复杂度:O(n)。

其中,n 表示字符的个数,在上述代码中,主要是对字符串进行遍历,所以时间复杂度为 O(n)。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞



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

相关文章

java计算机毕业设计springboot+vue航空公司电子售票系统-机票预订系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…

算法进阶指南:基本算法0x07 贪心

1.Sunscreen 传送门 #include<bits/stdc.h> using namespace std; const int N2510; pair<int,int>a[N],b[N]; int main() {int n,m;cin>>n>>m;for(int i1;i<n;i) cin>>a[i].first>>a[i].second;for(int i1;i<m;i) cin>>b[i…

c++-数据类型

c-数据类型整型取值范围与内存溢出浮点型浮点型coutsetf显示精读浮点数的存储机制&#xff08;还要再看 &#xff09;字符型转义字符字符串型 - stringstring与C字符串字符串操作bool 类型I/Ocin/coutcout控制输出endl整型 short : 2bytesint : 4byteslonglong : longchar : 1…

【程序人生】卡塔尔世界杯吉祥物python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

卡塔尔世界杯吉祥物python海龟绘图&#xff08;附源代码&#xff09; 世界杯主题前端特效5个&#xff08;附源码&#xff09;程序人生 本文目录&#xff1a; 一、python turtle海龟绘图卡塔尔世界杯吉祥物 &#xff08;1&#xff09;、世界杯吉祥物“Laeeb”绘制效果图 &am…

JS之DOM

1、节点的属性&#xff08;nodeName、nodeType、nodeValue&#xff09;&#xff1a; 文档节点&#xff1a; nodeType 9nodeValue nullnodeName #document 元素节点&#xff1a; nodeType 1nodeValue nullnodeName 标签名 属性节点&#xff1a; nodeType 2nodeValue 属性值…

latex设置citation显示作者+年份

如果是bib文件分开放&#xff0c;并且每个引用都明确写了author和year&#xff0c;那么直接\citep 就可以&#xff0c;就能产生(abc et al., 2015) 这种格式, 如果你不想要圆括号&#xff0c;可以使用\usepackage[square]{natbib}, 也可以使用\setcitestyle{authoryear,open{(}…

家居类小红书达人投放总结,kol执行策略

在小红书平台上&#xff0c;许多品牌方都做了达人投放&#xff0c;但结果却反响平平&#xff0c;最后才发现是达人挑选出了问题&#xff0c;而发现这个问题的代价就是错失先机&#xff0c;也耗费大量成本来试错&#xff0c;今天为大家分享一下小红书达人投放总结以及超硬干货。…

电销机器人源码厂家哪家好

而随着人工智能的发展&#xff0c;越来越多的企业开始选择采用智能语音机器人&#xff0c;来减轻人工的压力&#xff0c;更好的服务客户&#xff0c;提高效率。 智能语音机器人 优点有哪些? 1.降低成本 企业使用智能语音机器人不仅不用担心人员流失问题&#xff0c;还能为机…