前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1839. 所有元音按顺序排布的最长子字符串--题解

1839. 所有元音按顺序排布的最长子字符串--题解

作者头像
付威
发布2021-04-28 10:01:40
6300
发布2021-04-28 10:01:40
举报
1839. 所有元音按顺序排布的最长子字符串

当一个字符串满足如下条件时,我们称它是 美丽的

  • 所有 5 个英文元音字母('a''e''i''o''u')都必须 至少 出现一次。
  • 这些元音字母的顺序都必须按照 字典序 升序排布(也就是说所有的 'a' 都在 'e' 前面,所有的 'e' 都在 'i' 前面,以此类推)

比方说,字符串 "aeiou""aaaaaaeiiiioou" 都是 美丽的 ,但是 "uaeio""aeoiu""aaaeeeooo" 不是美丽的

给你一个只包含英文元音字母的字符串 word ,请你返回 word最长美丽子字符串的长度 。如果不存在这样的子字符串,请返回 0

子字符串 是字符串中一个连续的字符序列。

示例 1:

代码语言:javascript
复制
输入:word = "aeiaaioaaaaeiiiiouuuooaauuaeiu"
输出:13
解释:最长子字符串是 "aaaaeiiiiouuu" ,长度为 13 。

示例 2:

代码语言:javascript
复制
输入:word = "aeeeiiiioooauuuaeiou"
输出:5
解释:最长子字符串是 "aeiou" ,长度为 5 。

示例 3:

代码语言:javascript
复制
输入:word = "a"
输出:0
解释:没有美丽子字符串,所以返回 0 。

提示:

  • 1 <= word.length <= 5 * 105
  • word 只包含字符 'a''e''i''o''u'

解答思路

  1. 如果 word[i]>=word[i-1] 代表有效的排序
  2. 如果 word[i]>word[i] 代表需要切换到下一个字符比较
  3. 如果都不满足,则需要重置类型和长度
  4. 只有完全匹配字符 才计算长度。
代码语言:javascript
复制
func longestBeautifulSubstring(word string) int {
	t, m, max := 1, 1, 0
	for i := 1; i < len(word); i++ {
		if word[i] >= word[i-1] {
			m++
		}
		if word[i] > word[i-1] {
			t++
		}
		if word[i] < word[i-1] {
			t = 1
			m = 1
		}
		if t == 5 {
			if m > max {
				max = m
			}

		} //更新最大字符串

	}
	return max
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-262,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1839. 所有元音按顺序排布的最长子字符串
  • 解答思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档