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

Posted Linux猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为上机真题 2022消消乐游戏相关的知识,希望对你有一定的参考价值。

🎈 作者: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)。


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


以上是关于华为上机真题 2022消消乐游戏的主要内容,如果未能解决你的问题,请参考以下文章

华为机试真题 C++ 实现消消乐游戏字符串消除

华为机试真题 C++ 实现消消乐游戏字符串消除

华为OD机试 - 字母消消乐(Python)| 真题+思路+代码

华为OD机试 - 消消乐游戏(Java) | 机试题+算法思路+考点+代码解析 2023

华为OD机试真题 JS 实现开心消消乐2023 Q1 | 100分

闪亮消消乐玩游戏 赢大奖 IPAD等你抢!