3227. Vowels Game in a String
题目简介
题目给我们一个字符串 s,要求我们配合 Alice 与 Bob 玩一场游戏
首先是 Alice:Alice 需要从字符串中,找出含有奇数个母音字母的子字符串,将其从原有字符串中删除
紧接着是 Bob:Bob 需要从剩下来的字符串中,找出含有偶数个母音字母的子字符串,将其从原有字符串中删除
然后回到 Alice……以此类推
最后谁无法进行下一步则判定其输了,Alice 赢的话返回 true,反之返回 false
解题思路
我们可以用贪婪的思想来思考这道题,分三种可能性:
- 字符串中一个母音字符都没有:Bob 包赢(因为 Alice 第一步就没法走)
- 字符串中有奇数个母音字符:Alice 包赢(因为她可以在一开始把整个字符串都删除,导致 Bob 完全没法走)
- 字符串有偶数个母音字符:Alice 包赢(在第一句 Alice 删除后,字符串会变成奇数母音字符的字符串,此时 Bob 完成他的删除后,字符串仍然只会是含有奇数个母音字符的字符串,此时回到了第二种可能性,所以 Alice 包赢)
结论:除了字符串中一个母音字符都没有的情况下,Alice 包赢
Javascript
/**
* @param {string} s
* @return {boolean}
*/
var doesAliceWin = function(s) {
return [...s].some(c=> ['a', 'e', 'i', 'o', 'u'].includes(c))
};