【拒绝算法PUA】LeetCode 2255. 统计是给定字符串前缀的字符串数目

目录

系列文章目录

专题总结:

C++刷题技巧总结:

题目 2116. 判断一个括号字符串是否有效

难度

描述

解题方法1


系列文章目录

专题总结:

  1. 【拒绝算法PUA】0x00-位运算
  2. 【拒绝算法PUA】0x01- 区间比较技巧
  3. 【拒绝算法PUA】0x02- 区间合并技巧
  4. 【拒绝算法PUA】0x03 - LeetCode 排序类型刷题
  5. 【拒绝算法PUA】LeetCode每日一题系列刷题汇总-2025年持续刷新中

C++刷题技巧总结:

  1. 温习C/C++]0x04 刷题基础编码技巧

题目 LeetCode 2255. 统计是给定字符串前缀的字符串数目

2255. 统计是给定字符串前缀的字符串数目https://leetcode.cn/problems/count-prefixes-of-a-given-string/description

难度

简单

描述

给你一个字符串数组 words 和一个字符串 s ,其中 words[i] 和 s 只包含 小写英文字母 。

请你返回 words 中是字符串 s 前缀 的 字符串数目 。

一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串 是一个字符串中的连续一段字符序列。

示例 1:

输入:words = ["a","b","c","ab","bc","abc"], s = "abc"
输出:3
解释:
words 中是 s = "abc" 前缀的字符串为:
"a" ,"ab" 和 "abc" 。
所以 words 中是字符串 s 前缀的字符串数目为 3 。

示例 2:

输入:words = ["a","a"], s = "aa"
输出:2
解释:
两个字符串都是 s 的前缀。
注意,相同的字符串可能在 words 中出现多次,它们应该被计数多次。

提示:

  • 1 <= words.length <= 1000
  • 1 <= words[i].length, s.length <= 10
  • words[i] 和 s  包含小写英文字母。

    解题方法1

    单向滑动窗口,获取s子字符串前缀,然后将前缀在words中查找和计数。

    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    class Solution {
    public:
        int countPrefixes(vector<string>& words, string s) {
            int res = 0;
            int left = 0;
            int right = 0;
            int len = s.size();
            while (right <= len) {
                string tmp = s.substr(left, right++);
                if (std::count(words.begin(), words.end(), tmp) != 0) {
                    res += std::count(words.begin(), words.end(), tmp);
                }
            }
            return res;
        }
    };
    
    int main(int argc, char **argv) {
        Solution obj;
        vector<string> words = {"a","b","c","ab","bc","abc"};
        string s = "abc";
    //    vector<string> words = {"a","a"};
    //    string s = "aa";
        int ret = obj.countPrefixes(words, s);
        cout << ret << endl;
        return 0;
    }

    输出:

    3

      关注我,跟我一起每日一题!
    【拒绝算法PUA】LeetCode每日一题系列刷题汇总-2025年持续刷新中

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值