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


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

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

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

    比方说,字符串 “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 。

    解题代码如下:

    
    
    
    int longestBeautifulSubstring(char * word){
    
        char a[5]={'a','e','i','o','u'};
        int size=0;
        for(int i=0;word[i]!='\0';i++){
            for(int j=0;j<5;j++){
              //  printf("%c %c",word[i],a[j]);
                if(word[i]==a[j]){
                    word[size++]=word[i];
                    break;
                }
            }
        }
        word[size]='\0';
        int target=0;
        int num=0;
        int max=0;
        for(int i=0;word[i]!='\0';i++){
           // printf("%c %d %d ",word[i],num,target);
            if(num==0&&target==0&&word[i]!='a'){
                continue;
            }
            if(target%5==4&&word[i]!='u'){
                 if(num>max&&target%5==4){
                       max=num;
                   }
                 num=0;
                   target=0;
                
            }
            if(word[i]!=a[target%5]){
               if(word[i]==a[(target+1)%5]){
                   num++;
                   target++;
                   if(num>max&&target%5==4){
                       max=num;
                   }
               }
               else{
                   num=0;
                   target=0;
                   if(word[i]=='a'){
                        i--;
    
                   }
                  
               }
    
            }
            else{
               
                num++;
                 if(num>max&&(target)%5==4){
                       max=num;
                   }
                 
                 
    
            }
    
        }
    
    return max;
       
    
    }
    
    • 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
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
  • 相关阅读:
    成为会带团队的技术人 在管理艺术中寻找确定性的“工程逻辑”
    老鼠进洞模型
    计算机图形学:光线追踪(ray tracing)
    PMP每日一练 | 考试不迷路-11.09(包含敏捷+多选)
    CCF ChinaSoft 2023 论坛巡礼 | 云计算标准化论坛
    JOSN和全局异常处理
    C语言实现循环双链表
    【MySQL事务_2_事务提交与回滚】
    axios和fetch的区别
    element-ui 图片压缩上传
  • 原文地址:https://blog.csdn.net/weixin_43327597/article/details/126801528