统计范围内的元音字符串数c

给你一个下标从 0 开始的字符串数组 words 和两个整数:left 和 right 。

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

返回 words[i] 是元音字符串的数目,其中 i 在闭区间 [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 <= words.length <= 1000
1 <= words[i].length <= 10
words[i] 仅由小写英文字母组成
0 <= left <= right < words.length
int vowelStrings(char** words, int wordsSize, int left, int right) { int sum=0;//用于计数 bool ce=false;//用于判断 char string[5]={'a','e','i','o','u'};//定义元音字符串 for(int i=left;i<=right;i++) { for(int j=0;j<5;j++)//j=元音的数目 { if(words[i][0]==string[j]) ce=true; } int l=strlen(words[i])-1; for(int j=0;j<5;j++) { if(ce==true && words[i][l]==string[j]) sum++; } ce=false;//用于下次判断 } return sum; }
还是遍历的思想,将字符串元素与元音进行比较,先判断首字母,再判断尾字母。
一种更好用方法:用strchr函数(它的作用是在一个字符串中查找给定字符的第一个匹配之处,并返回指向该字符的指针。如果没有找到该字符,则返回 NULL。)
int vowelStrings(char** words, int wordsSize, int left, int right) { int sum=0; char* aeiou = "aeiou"; for (int i=left; i<=right; i++) { int wordsize = strlen(words[i])-1; if (strchr(aeiou, words[i][0]) != NULL) if (strchr(aeiou, words[i][wordsize]) != NULL) sum++; } return sum; }没想起来,难受。
写一下思路。
基本思想遍历,然后想循环次数和从哪开始,确定次数后想怎么判断首尾元音与否。
知识:字符串函数,二维字符数组。
strchr函数:
一、strchr()函数的作用
字符串函数 strchr() 是 C 语言的一个标准库函数,它的作用是在一个字符串中查找给定字符的第一个匹配之处,并返回指向该字符的指针。如果没有找到该字符,则返回 NULL。
二、strchr()函数的返回值
strchr()函数的返回值是一个字符指针,它指向的是在字符串 str 中第一次出现字符 c 的位置。如果在字符串 str 中找到了字符 c,那么返回的指针就是 str + i,其中 i 是字符 c 在字符串 str 中的索引,从 0 开始计数。如果在字符串 str 中没有找到字符 c,那么返回的指针就是 NULL,也就是 0。
注意,字符串结尾的空字符 ‘\0’ 也视为 str 的一部分,因此可以通过定位 ‘\0’ 得到一个指向字符串末尾的指针。
三、strchr()函数的注意事项
在使用 strchr() 函数时,需要注意以下几点:
strchr() 函数只能查找单个字符,不能查找字符串。如果要查找字符串,可以使用 strstr() 函数。
strchr() 函数只能查找字符的第一个匹配,不能查找所有的匹配。如果要查找所有的匹配,可以使用循环或递归的方法。
strchr() 函数对于大小写敏感,也就是说,它会区分字符 ‘a’ 和 ‘A’。如果要忽略大小写,可以使用 strcasecmp() 函数。
strchr() 函数对于多字节字符的支持不完善,也就是说,它只会查找多字节字符的第一个字节。如果要查找多字节字符,可以使用 wstrchr() 函数。
补充一个字符串函数isalpha
str.isalpha()实现的是如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
另外,strlen函数可以测字符数组中元素的长度。

posted @ 2025-05-27 17:46  崩溃的小孙  阅读(22)  评论(0)    收藏  举报