2025-03-09:字符串元音游戏。用go语言,小红和小明正在进行一个涉及字符串的游戏。 给定一个字符串 s,小红和小明交替进

举报
福大大架构师每日一题 发表于 2025/03/09 08:38:44 2025/03/09
【摘要】 2025-03-09:字符串元音游戏。用go语言,小红和小明正在进行一个涉及字符串的游戏。给定一个字符串 s,小红和小明交替进行,游戏由小红开始:1.在小红的回合,她必须从字符串 s 中去掉一个含有奇数个元音的非空子字符串。2.在小明的回合,他需要去掉一个含有偶数个元音的非空子字符串。如果某一位玩家在其回合中无法找到符合条件的子字符串进行移除,便会输掉游戏。假设两位玩家都采取最优策略。如果小...

2025-03-09:字符串元音游戏。用go语言,小红和小明正在进行一个涉及字符串的游戏。

给定一个字符串 s,小红和小明交替进行,游戏由小红开始:

1.在小红的回合,她必须从字符串 s 中去掉一个含有奇数个元音的非空子字符串。

2.在小明的回合,他需要去掉一个含有偶数个元音的非空子字符串。

如果某一位玩家在其回合中无法找到符合条件的子字符串进行移除,便会输掉游戏。假设两位玩家都采取最优策略。

如果小红最终赢得比赛,返回 true;如果小明胜出,则返回 false。

1 <= s.length <= 100000。

s 仅由小写英文字母组成。

输入: s = “leetcoder”。

输出: true。

解释:

小红可以执行如下移除操作来赢得游戏:

1.小红先手,她可以移除加下划线的子字符串 s = “leetcoder”,其中包含 3 个元音。结果字符串为 s = “der”。

2.小明接着,他可以移除加下划线的子字符串 s = “der”,其中包含 0 个元音。结果字符串为 s = “er”。

3.小红再次操作,她可以移除整个字符串 s = “er”,其中包含 1 个元音。

4.又轮到小明,由于字符串为空,无法执行移除操作,因此小红赢得游戏。

答案2025-03-09:

chatgpt

题目来自leetcode3227。

大体步骤如下:

1.初始化字符串为 “leetcoder”,小红先手。

2.小红移除含有奇数个元音的非空子字符串,找到第一个含有 3 个元音的子字符串"lee",移除后得到 “tcoder”。

3.轮到小明,小明移除含有偶数个元音的非空子字符串,找到不含元音的子字符串"tcoder",移除后得到 “tcoder”。

4.小红继续,移除含有奇数个元音的非空子字符串"tcoder",此时只剩下"tcoder"中的"o"一个元音,得到空字符串""。

5.轮到小明,无法找到符合条件的子字符串进行移除,小红赢得游戏。

在这个过程中,小红和小明交替进行操作,找到符合条件的子字符串进行移除直到游戏结束。最终小红获胜,返回 true。

总的时间复杂度:

  • 在 doesAliceWin 函数中,使用了 strings.ContainsAny 方法,时间复杂度为 O(n),其中 n 为字符串 s 的长度,因为需要遍历整个字符串 s。

  • 游戏过程中,如果字符串长度为 n,则最多进行 n-1 次移除操作,因此总的时间复杂度为 O(n)。

总的额外空间复杂度:

  • 代码中并没有使用额外空间来存储数据,只是对字符串进行操作,因此总的额外空间复杂度为 O(1)。

Go完整代码如下:

package main

import (
	"fmt"
	"strings"
)

func doesAliceWin(s string) bool {
	return strings.ContainsAny(s, "aeiou")
}

func main() {
	s := "leetcoder"
	result := doesAliceWin(s)
	fmt.Println(result)
}

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-

def does_alice_win(s: str) -> bool:
    return any(char in 'aeiou' for char in s)

if __name__ == "__main__":
    s = "leetcoder"
    result = does_alice_win(s)
    print(result)

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。