力扣2586.统计范围内的元音字符串数题解

今天我们来聊聊一道有趣的力扣题目——力扣2586.统计范围内的元音字符串数。这个题目看起来很简单,但其中也有一些需要注意的细节。

题目描述

你会得到一个下标从 0 开始的字符串数组 words 和两个整数:leftright

如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个元音字符串,其中元音字母是 ‘a’、‘e’、‘i’、‘o’、‘u’。

你的任务是返回在闭区间 [left, right] 内的元音字符串的数目。

示例 1

输入:words = ["are","amy","u"], left = 0, right = 2

输出:2

解释:

  • “are” 是一个元音字符串,因为它以 ‘a’ 开头并以 ‘e’ 结尾。
  • “amy” 不是元音字符串,因为它没有以元音字母结尾。
  • “u” 是一个元音字符串,因为它以 ‘u’ 开头并以 ‘u’ 结尾。

在上述范围中的元音字符串数目为 2。

示例 2

输入:words = ["hey","aeo","mu","ooo","artro"], left = 1, right = 4

输出:3

解释:

  • “aeo” 是一个元音字符串,因为它以 ‘a’ 开头并以 ‘o’ 结尾。
  • “mu” 不是元音字符串,因为它没有以元音字母开头。
  • “ooo” 是一个元音字符串,因为它以 ‘o’ 开头并以 ‘o’ 结尾。
  • “artro” 是一个元音字符串,因为它以 ‘a’ 开头并以 ‘o’ 结尾。

在上述范围中的元音字符串数目为 3。

题目解析

从题目描述可以看出,我们需要检查每一个在指定范围内的字符串,看看它们是否以元音字母开头和结尾。这看起来很简单,但我们需要注意以下几点:

  1. 元音字母的识别:元音字母是 ‘a’、‘e’、‘i’、‘o’、‘u’。我们可以用一个集合来存储这些字母,方便后续检查。
  2. 遍历指定范围内的字符串:我们只需要遍历 leftright 范围内的字符串。
  3. 判断字符串的首尾字符:对于每一个字符串,我们需要检查它的第一个和最后一个字符是否在元音字母集合中。

代码实现

下面是这个题目的 Java 实现代码:

class Solution {
    public int vowelStrings(String[] words, int left, int right) {
        Set<Character> list = new HashSet<Character>();
        list.add('a');
        list.add('e');
        list.add('i');
        list.add('o');
        list.add('u');
        int number = 0;
        for (int i = left; i <= right; i++) {
            String word = words[i];
            if (list.contains(word.charAt(0)) && list.contains(word.charAt(word.length() - 1))) {
                number++;
            }
        }
        return number;
    }
}

代码解析

  1. 创建元音字母集合:我们首先创建一个集合 list 来存储所有的元音字母。
  2. 初始化计数器:变量 number 用来计数在指定范围内的元音字符串数目。
  3. 遍历指定范围内的字符串:从 leftright,我们遍历每一个字符串。
  4. 检查字符串的首尾字符:对于每一个字符串,检查它的第一个字符和最后一个字符是否在元音字母集合中。如果是,则计数器加一。
  5. 返回计数结果:最后返回计数器的值,即在指定范围内的元音字符串数目。

总结

这道题目考察了我们对字符串操作和集合使用的基本功。通过这道题目,我们不仅复习了如何判断字符串的首尾字符,还练习了如何使用集合来快速查找元素。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值