Post

3462 Vowels Game In A String

3462 Vowels Game In A String

Vowels Game in a String image

Alice and Bob are playing a game on a string.

You are given a string s, Alice and Bob will take turns playing the following game where Alice starts first:

1
2
On Alice's turn, she has to remove any **non-empty** substring from s that contains an **odd** number of vowels.
On Bob's turn, he has to remove any **non-empty** substring from s that contains an **even** number of vowels.

The first player who cannot make a move on their turn loses the game. We assume that both Alice and Bob play optimally.

Return true if Alice wins the game, and false otherwise.

The English vowels are: a, e, i, o, and u.

 

Example 1:

Input: s = “leetcoder”

Output: true

Explanation:

Alice can win the game as follows:

1
2
3
4
Alice plays first, she can delete the underlined substring in s = "**leetco**der" which contains 3 vowels. The resulting string is s = "der".
Bob plays second, he can delete the underlined substring in s = "**d**er" which contains 0 vowels. The resulting string is s = "er".
Alice plays third, she can delete the whole string s = "**er**" which contains 1 vowel.
Bob plays fourth, since the string is empty, there is no valid play for Bob. So Alice wins the game.

Example 2:

Input: s = “bbcd”

Output: false

Explanation:

There is no valid play for Alice in her first turn, so Alice loses the game.

 

Constraints:

1
2
1 <= s.length <= 105
s consists only of lowercase English letters.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

class Solution:
    def doesAliceWin(self, s: str) -> bool:
        """
            Does it makes sense to delete longest string possible 
            odd + even = odd
            so if alice does not pick longest , then bob gets to pick even 
            and bob must pick longest even so alice get's none
        """

        arr = []
        temp = 0
        for k in s:
            if k == 'a' or k == 'e' or k == 'i' or k == 'o' or k == 'u':
                temp += 1
            arr.append(temp)
        if temp == 0:
            return False
        return True
        
        right = len(arr) - 1
        alice_turn = True
        while(right >= 0):
            is_odd = True
            if arr[right] % 2 == 0:
                is_odd = False
            if alice_turn:
                return

            

        




This post is licensed under CC BY 4.0 by the author.