Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
一、问题描述
给你一个字符串数组 words 和一个字符串 pref ,返回 words
**中以 pref
作为 前缀 的字符串的数目。
字符串 s
的 前缀 就是 s
的任一前导连续字符串。
题目链接:统计包含给定前缀的字符串
二、题目要求
样例1
输入: words = ["pay","attention","practice","attend"], pref = "at"
输出: 2
解释: 以 "at" 作为前缀的字符串有两个,分别是:"attention" 和 "attend" 。
复制代码
样例2
输入: words = ["leetcode","win","loops","success"], pref = "code"
输出: 0
解释: 不存在以 "code" 作为前缀的字符串。
复制代码
考察
1.字符串的应用
2.建议用时10~25min
复制代码
三、问题分析
这一题比较简单,我们可以利用C++ String类里面的查找方法解决这一题。
函数 | 用法 |
查找(查找成功返回元素位置,失败返回-1) | |
s.find(‘A’) | 查找字符A |
s.find(“ABC”) | 查找字符串ABC |
s.find(‘A’,2) | 从位置2开始查找字符A |
s.find(“ABCD”,1,2) | 从位置1开始,查找ABCD的前两个字符 |
s.rfind() | 从字符串尾部开始查找 |
如果满足words[i].find(pref)==0,那么不就代表字符串pref是words[i]的前缀吗?
复制代码
这篇文章的总结提高部分对String有详细的介绍:算法题每日一练—第22天:猜字母
四、编码实现
class Solution {
public:
int prefixCount(vector<string>& words, string pref) {
int i,ans=0,n=words.size();//初始化
for(i=0;i<n;i++)//循环判断
{
if(words[i].find(pref)==0)//判断是否为前缀
{
ans++;//计数器++
}
}
return ans;//输出结果
}
};
复制代码
五、测试结果
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END