目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
游戏规则:
输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束输出最终得到的字符串长度。
二、输入描述
输入原始字符串str,只能包含大小写英文字母,字母的大小写敏感,str长度不超过100。
三、输出描述
输出游戏结束后,最终得到的字符串长度。
四、解题思路
- 由于栈:后进先出的特效,首先要能想到应用栈Stack;
- 通过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分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。