力扣第 282 场周赛 :统计包含给定前缀的字符串

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;//输出结果
        
    }
};
复制代码

五、测试结果

2.png

1.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享