Cover image for leetcode每日一题 P3227 字符串元音游戏

leetcode每日一题 P3227 字符串元音游戏

字数 364
阅读
访客

时间轴

时间轴

2025-09-12

init

状态分析

题目:

这题可以画一个状态机来看

字符串元音游戏状态机图示
字符串元音游戏状态机图示

小红先手,如果整个串的元音字母是奇数,那么直接拿所有的串,小红胜

小红先手,如果整个串的元音字母是偶数,除非是 0 个,小红先手就输了;如果是非零,那么再拿一个奇数个元音字母字串后,至少还剩下 2-1=1 个元音子串,而这时小明要拿偶数个,只能拿 0 个,因此必定可以进入状态机的第三个,整个串剩下奇数个,而轮到小红拿奇数个了,直接拿走所有串,小红胜出。

因此,只要这个字符串有元音字母,就是小红胜出,fou’ze

12345678910111213141516171819202122232425262728293031
#include <stdbool.h>#include <string.h>bool isVowel(char c) {  if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' ||      c == 'E' || c == 'I' || c == 'O' || c == 'U') {    return true;  }  return false;}bool doesAliceWin(char *s) {  int vowel_num = 0;  int len;  len = strlen(s);  // 统计所有的元音数目  for (int i = 0; i < len; i++) {    if (isVowel(s[i])) {      vowel_num++;    }  }  if (vowel_num == 0) {    return false;  }  if (vowel_num % 2 == 0) { // 偶数    return true;  } else { // 奇数    return true;  }}
评论加载中…