栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode 2062. 统计字符串中的元音子字符串

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 2062. 统计字符串中的元音子字符串

2062. 统计字符串中的元音子字符串
  • 一、题目描述
  • 二、解题报告
    • 1、思路分析
    • 2、代码详解

一、题目描述

子字符串 是字符串中的一个连续(非空)的字符序列。
元音子字符串 是 仅 由元音('a'、'e'、'i'、'o' 和 'u')组成的一个子字符串,且必须包含 全部五种 元音。
给你一个字符串 word,统计并返回 word 中 元音子字符串的数目 。
输入:word = “aeiouu”
输出:2
解释:下面列出 word 中的元音子字符串(加粗部分):
“aeiouu”
“aeiouu”

来源:2062. 统计字符串中的元音子字符串

二、解题报告 1、思路分析

  (1)用二进制将五个元音字母和其他字母一一对应起来。

aeiou其他
0000100010001000100010000100000

  (2)利用位或运算,当mymask=11111时,即全都包含。
  (3)当子字符串中含有其他字母时,进行100000与mymask进行位与运算,会得到非零数,此时重新遍历,例:
若mymask=010110 & 100000=000000;
若mymask=101010 & 100000=100000;
  (4)若mymask=011111,则子串成立,ans增加。

2、代码详解
#define mask ((1<<5)-1)
int getchmask(char c){
    char a[]={"aeiou"};
    for(int i=0;i<5;i++){
        if(a[i]==c) return (1<
    int ans=0;
    int mymask;
    for(int i=0;word[i];++i){
        mymask=0;
        for(int j=i;word[j];j++){
            mymask|=getchmask(word[j]); 
            if(mymask & (1<<5))
                break;
            if((mymask)==(mask))
                ans++;
        }
    }
    return ans;
}

借鉴:英雄哪里出来

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号