华为OD机试 - 消消乐游戏 - 栈Stack(Java 2023 B卷 100分)

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

游戏规则:

输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束输出最终得到的字符串长度。

二、输入描述

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

三、输出描述

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

四、解题思路

  1. 由于栈:后进先出的特效,首先要能想到应用栈Stack;
  2. 通过peek()获取最新的字母,与下一个字母进行比较,看是否可以消除;
    • 如果相等,则通过pop()弹出;
    • 否则将字母压入栈中;

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String str = sc.nextLine();
    /**
     * 栈:后进先出
     * 队列:先进先出
     */
    Stack stack = new Stack();
    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        /**
         * peek():取栈顶元素但不弹出
         * pop():将栈顶元素弹出
         */
        if(!stack.empty() && stack.peek().equals(c)){
            stack.pop();
        }else{
            stack.push(c);
        }
    }
    System.out.println(stack.size());
}

六、效果展示

1、输入

NezhaahZ

2、输出

4

3、说明

华为OD机试 - 消消乐游戏 - 栈Stack(Java 2023 B卷 100分)_第1张图片


下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,游戏,java,程序人生,学习,算法)