3227. 字符串元音游戏
#博弈树
https://leetcode.cn/problems/vowels-game-in-a-string?envType=daily-question&envId=2025-09-12小红和小明在玩一个字符串元音游戏。
给你一个字符串 s
,小红和小明将轮流参与游戏,小红 先 开始:
- 在小红的回合,她必须移除
s
中包含 奇数 个元音的任意 非空 子字符串。 - 在小明的回合,他必须移除
s
中包含 偶数 个元音的任意 非空 子字符串。
第一个无法在其回合内进行移除操作的玩家输掉游戏。假设小红和小明都采取 最优策略 。
如果小红赢得游戏,返回 true
,否则返回 false
。
英文元音字母包括:a
, e
, i
, o
, 和 u
。
可以注意到,小红先手需要消除奇数个元音
1.若总共有奇数个元音,小红可以一次消除完,则小红胜
2.若总共有偶数个元音,小红第一次消除奇数个,则剩余奇数个元音,小明消除偶数个,总数仍处于奇数个,小红一次消除完,小红胜
3.若总共0个元音,小红败
class Solution {
public:bool doesAliceWin(string s) {unordered_set<char>vowel={'a','e','i','o','u'};int cnt=0;for(auto c:s)if(vowel.find(c)!=vowel.end())cnt++;return cnt>0;}
};