文章目录

  • 1. 题目
  • 2. 解题

1. 题目

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

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

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

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

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

示例 1:
输入:word = "aeiaaioaaaaeiiiiouuuooaauuaeiu"
输出:13
解释:最长子字符串是 "aaaaeiiiiouuu" ,长度为 13 。示例 2:
输入:word = "aeeeiiiioooauuuaeiou"
输出:5
解释:最长子字符串是 "aeiou" ,长度为 5 。示例 3:
输入:word = "a"
输出:0
解释:没有美丽子字符串,所以返回 0 。提示:
1 <= word.length <= 5 * 10^5
word 只包含字符 'a','e','i','o' 和 'u' 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-of-all-vowels-in-order
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 滑动窗口模拟
class Solution {public:int longestBeautifulSubstring(string word) {int n = word.size(), maxlen = 0;for(int i = 0; i < n; ++i){if(word[i] == 'a')word[i] = '1';else if(word[i] == 'e')word[i] = '2';else if(word[i] == 'i')word[i] = '3';else if(word[i] == 'o')word[i] = '4';else if(word[i] == 'u')word[i] = '5';}// 先预处理下字符串int i = 0, j = 0;while(j < n){char c = '0';i = j;while(j < n && (word[j] == c || word[j] == c+1)){    // 前面 <= 后面的字符c = word[j];j++;}if(i == j)j++;//没有字符被遍历else if(word[j-1] == '5')// u 结束的字符子串maxlen = max(maxlen, j-i);}return maxlen;}
};

112 ms 26.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1839. 所有元音按顺序排布的最长子字符串(滑动窗口)相关推荐

  1. 华为机考攻略(python)--字符串操作【9题】(第六题leetcode1839所有元音按顺序排布的最长子字符串)

    系列文章目录 文章目录 系列文章目录 前言 一.leetcode1839所有元音按顺序排布的最长子字符串 二.sound code 总结 前言 一.leetcode1839所有元音按顺序排布的最长子字 ...

  2. R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,ncol参数指定行的个数、byrow参数指定按照行顺序排布图

    R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,ncol参数指定行的个数.byrow参数指定按照行顺序排布图 目录

  3. R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,nrow参数指定行的个数、byrow参数指定按照列顺序排布图

    R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,nrow参数指定行的个数.byrow参数指定按照列顺序排布图 目录

  4. SecureCRT 9.0.0【全家桶】 一个窗口多个会话 会话的排布方式 同时在多个窗口输入命令 更改字体颜色 $ 设置常用命令 关键词高亮变色

    一个窗口多个会话 在左侧的session manager中的某一个会话 --> 右键 --> 点击"open sessions in a tab/tile" 然后在所有 ...

  5. [redis]Redis ZSet排序问题(排名实现按时间顺序排布)

    背景: 需求: 承接之前mongo通过存储到mongo里面的战绩表计算出用户排名并将排名信息落库到mysql,但是由于用户排名需要频繁读取且其后续在计算排名后排名不会发生变动,所以将用户排名放到了re ...

  6. LeetCode 16. 最接近的三数之和(固定左端+滑动窗口)

    1. 题目 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. ...

  7. 11. Leetcode 713. 乘积小于K的子数组 (数组-同向双指针-滑动窗口)

    给定一个正整数数组 nums和整数 k .请找出该数组内乘积小于 k 的连续的子数组的个数.示例 1:输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小于10 ...

  8. LeetCode 159. 至多包含两个不同字符的最长子串 (滑动窗口哈希表)

    159. 至多包含两个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {// 记录 ...

  9. 日紫白飞星算法_陈春林|紫白飞星排布技巧

    原标题:陈春林|紫白飞星排布技巧 紫白飞星排布 2020年1月31日 壹 年家紫白 清代道光年间河北衡水人张觉正<阳宅爱众篇·三元年白歌>曰:"上元甲子一白求,中元四绿却为头.下 ...

最新文章

  1. python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...
  2. AI如何在安防行业更加深入?可从超高清视频监控切入
  3. 如何做好网站开发项目需求分析(转)
  4. docker学习笔记(四): 镜像和仓库
  5. linux vscode配置spring boot开发环境
  6. Ajax — 大事件项目(第四天)
  7. Word2vec学习笔记总结
  8. 上班又能摸鱼啦!在M1芯片的macbook上刷朋友圈可还行?
  9. vuex--mutation,action个人理解
  10. java 高级工程师面试
  11. html select onchange 失效
  12. Java Web之Cookie和Session的理解
  13. Zebra-VTYSH源码分析和改造
  14. if语句的基本使用语法
  15. ubuntu QT Creator Fatal IO error 2 (没有那个文件或目录) on X server :0
  16. Hadoop3.3.2+hbase2.4.10org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not runn
  17. 总结解决 No suitable driver found for jdbc:mysql//localhost:3306/ 问题的解决方案,各种情况都已囊括,希望可以帮助到有需要的各位
  18. 证券运维外包第3个月工作总结
  19. HTPPS和HTTP的概念和区别
  20. autocad ios 虚线_CAD交互绘制虚线(com接口)

热门文章

  1. Python 面向对象之双下方法,内置函数
  2. 装机之windows10和ubuntu双系统
  3. 【机器学习】自己手写实现线性回归,梯度下降 原理
  4. ssh 介绍 和使用 程序不挂起
  5. 数据库函数依赖及范式
  6. iphone无线充电充电测试软件,瞎折腾星人的测评 篇一:想体验iPhone的无线充电?这可能是最具性价比的选择了!...
  7. 非阻塞I/O多路复用机制
  8. ios 逆向编程(环境搭建)
  9. CodeForces 903D Almost Difference
  10. struts2中一些常用的写法 记录