当前位置: 首页 > news >正文

珠海网站制作品牌策划seo排名公司

珠海网站制作品牌策划,seo排名公司,美容网站建设一个多少钱,做暖暖免费视频网站图源:文心一言 上机题目练习整理,本篇作为字符串容器的代码,提供了常规解法及其详细解释,供小伙伴们参考~🥝🥝 第1版:在力扣新手村刷题的记录~🧩🧩 方法:常…

 

图源:文心一言

上机题目练习整理,本篇作为字符串容器的代码,提供了常规解法及其详细解释,供小伙伴们参考~🥝🥝

  • 第1版:在力扣新手村刷题的记录~🧩🧩
    • 方法:常规枚举解法~

编辑:梅头脑🌸

审核:文心一言

题目:2586. 统计范围内的元音字符串数 - 力扣(LeetCode)


目录

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

🧩题目

🌰方法一:常规枚举解法

🔚结语


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

🧩题目

给你一个下标从 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 。

🌰方法一:常规枚举解法

📇算法思路

  • 算法思想:在 [left,right]范围内枚举给定字符串数组 words 中的字符串,并判断其是否以元音字母开头,并且以元音字母结尾;
  • 时间复杂度:O(n+e),n是数组的长度,e是枚举表的长度;
  • 空间复杂度:O(e),e是枚举表的长度;

⌨️算法代码1

#include <vector>  
#include <string>  
#include <cctype> // 为了使用 tolower()  using namespace std;  class Solution {  
public:  int vowelStrings(vector<string>& words, int left, int right) {  int count = 0;  // 遍历指定范围内的字符串  for (int i = left; i <= right; i++) {  string& word = words[i];  // 判断字符串是否以元音字母开头和结尾 if (!word.empty()) {  char firstChar = tolower(word[0]);  char lastChar = tolower(word[word.size() - 1]);  if ((firstChar == 'a' || firstChar == 'e' || firstChar == 'i' || firstChar == 'o' || firstChar == 'u') &&  (lastChar == 'a' || lastChar == 'e' || lastChar == 'i' || lastChar == 'o' || lastChar == 'u')) {  count++;  }  }  }  return count;  }  
};

⌨️算法代码2

class Solution {  
public:  int vowelStrings(vector<string>& words, int left, int right) {  // 元音字母集合  vector<char> vowels = {'a', 'e', 'i', 'o', 'u'};  int count = 0;  // 遍历指定范围内的字符串  for (int i = left; i <= right; i++) {  string& word = words[i];  char first = tolower(word[0]); // 转换为小写字母  char last = tolower(word[word.size() - 1]); // 转换为小写字母  // 判断字符串是否以元音字母开头和结尾  if (find(vowels.begin(), vowels.end(), first) != vowels.end() &&  find(vowels.begin(), vowels.end(), last) != vowels.end()) {  count++;  }  }  return count;  }  
};

⌨️算法代码3

class Solution {
public:int vowelStrings(vector<string>& words, int left, int right) {unordered_set<char> vowels = {'a', 'e', 'i', 'o', 'u'};int ans = 0;for (int i = left; i <= right; ++i) {const string& word = words[i];if (vowels.count(word[0]) && vowels.count(word.back())) {++ans;}}return ans;}
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/count-the-number-of-vowel-strings-in-range/solutions/2515213/tong-ji-fan-wei-nei-de-yuan-yin-zi-fu-ch-dau9/

 备注:算法代码1、2、3在思路上非常相似,只是语法的细节有些不同,以下详细解释。

📇代码解释

1:遍历指定范围的字符串

以示例2为例,words = ["hey","aeo","mu","ooo","artro"], left = 1, right = 4

  • for (int i = left; i <= right; i++) ,这句可以将 i 指向 "aeo",并通过循环遍历"aeo","mu","ooo","artro";
  • string& word = words[i]; 创建一个对words数组中索引为i(words[i])的字符串的引用(string&),并将其命名为word;如果是第1轮循环,word中的内容为aeo;

2:判断字符串的长度

  • 算法1、算法2:
    • 使用word.size()或者word.length(),注意,实际遍历时以0开头,因此最后1位的数组下标为word.size()-1或者word.length()-1;
    • tolower()执行字符串转小写的功能,感兴趣详见🌸,当然,如果输入都是小写的话去掉这一步也问题不大;
char firstChar = tolower(word[0]);  
char lastChar = tolower(word[word.size() - 1]);  
  • 算法3:
    • 使用word.back(),直接读取最后一位字符;此处的word[0]也可写作word(word.front()),直接读取第1位字符;
    • 相对地,.begin(),.end()则用于遍历字符串的开始与截止,之前的题目介绍过相关用法🌸字符串大写转小写,🌸C++代码入门03 字符串-CSDN博客;
vowels.count(word[0]) && vowels.count(word.back())

3:判断字符串以元音开头

  • 算法1:||逻辑或、&&逻辑与
    • if ((firstChar == 'a' || firstChar == 'e' || firstChar == 'i' || firstChar == 'o' || firstChar == 'u') && (lastChar == 'a' || lastChar == 'e' || lastChar == 'i' || lastChar == 'o' || lastChar == 'u'))  这一步通过逻辑与,逻辑或的运算,暴力枚举
  • 算法2:vector
    • vector<char> vowels = {'a', 'e', 'i', 'o', 'u'};   这一步定义容器vowels;
    • if (find(vowels.begin(), vowels.end(), first) != vowels.end() &&  find(vowels.begin(), vowels.end(), last) != vowels.end())  这一步暴力遍历字符串,查询是否与容器vowels内的元音字母匹配;
  • 算法3:unordered_set
    • unordered_set<char> vowels = {'a', 'e', 'i', 'o', 'u'};  这一步定义无序集合vowels,它内部使用哈希表(hash table)来实现,因此它的查找、插入和删除操作的平均时间复杂度通常为 O(1);🌸数据结构02附录02:哈希表[C++]-CSDN博客
    • if (vowels.count(word[0]) && vowels.count(word.back())),表示可以在哈希表vowels中查询到元音字母。

🔚结语

博文到此结束,写得模糊或者有误之处,欢迎小伙伴留言讨论与批评,督促博主优化内容{例如有错误、难理解、不简洁、缺功能}等,博主会顶锅前来修改~~😶‍🌫️😶‍🌫️

我是梅头脑,本片博文若有帮助,欢迎小伙伴动动可爱的小手默默给个赞支持一下,感谢点赞小伙伴对于博主的支持~~🌟🌟

同系列的博文:🌸数据结构_梅头脑_的博客-CSDN博客

同博主的博文:🌸随笔03 笔记整理-CSDN博客

http://www.yayakq.cn/news/152539/

相关文章:

  • 网站建设模板一次收费网站title怎么修改
  • 如何免费搭建网站源码江夏区做网站
  • 广州做商城网站吴江区城乡建设局网站
  • 自己做的网站可以百度推广吗北京视频制作公司
  • 在线A视频做爰网站上海雷蒙威手表网站
  • 网页设计与网站开发方向手机网站后台源码
  • 郑州的网站建设公司有哪些zencart网站管理
  • 聊城网站建设价位设计之家广告设计
  • 网站带薪歌手都要怎样做呀网站开发发展现状
  • 怀化seo网站中国建筑材料网
  • 优惠券网站是怎么做的免费seo公司
  • 企业网站mp4怎么处理网站超级链接
  • 织梦网站文章发布模板下载和wordpress类似
  • 如何用家庭电脑做网站wordpress用户名密码
  • 为什么会有免费制作网站新网站建设教程
  • wordpress 站长工具源码如何在外管局网站做延期
  • 2019广东省工程建设网站长沙网站建设设计
  • 专门做男装的网站wordpress主题有广告
  • 知名小蚁人网站建设淘宝联盟网站怎么做
  • 网站开发到上线需要多久网站建设交接清单
  • 网站的详情页面设计短视频推广方案怎么做
  • 宁波公司网站建立小程序解决方案网页模板下载
  • wordpress怎么添加注册南京seo排名
  • 网站审批新东方在线网上课程
  • 普同网站跟营销型网站的区别wordpress 制作 文档 插件
  • 站长之家源码营销型网站建设 高校邦
  • 检测网站为什么打不开了互联网彩票网站开发
  • 在环评备案网站上做登记后会怎么样公司小程序
  • 论坛的网站开发项目网络营销哪家比较专业
  • 三网合一营销型全网站傻瓜式免费自助建站系统