前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 1023. 驼峰式匹配(暴力匹配)

LeetCode 1023. 驼峰式匹配(暴力匹配)

作者头像
Michael阿明
发布2020-07-13 16:32:19
5190
发布2020-07-13 16:32:19
举报
文章被收录于专栏:Michael阿明学习之路

1. 题目

如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)

给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否则为 false。

代码语言:javascript
复制
示例 1:
输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB"
输出:[true,false,true,true,false]
示例:
"FooBar" 可以这样生成:"F" + "oo" + "B" + "ar"。
"FootBall" 可以这样生成:"F" + "oot" + "B" + "all".
"FrameBuffer" 可以这样生成:"F" + "rame" + "B" + "uffer".

示例 2:
输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBa"
输出:[true,false,true,false,false]
解释:
"FooBar" 可以这样生成:"Fo" + "o" + "Ba" + "r".
"FootBall" 可以这样生成:"Fo" + "ot" + "Ba" + "ll".

示例 3:
输出:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBaT"
输入:[false,true,false,false,false]
解释: 
"FooBarTest" 可以这样生成:"Fo" + "o" + "Ba" + "r" + "T" + "est".
 
提示:
1 <= queries.length <= 100
1 <= queries[i].length <= 100
1 <= pattern.length <= 100
所有字符串都仅由大写和小写英文字母组成。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/camelcase-matching 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 双指针暴力匹配
代码语言:javascript
复制
class Solution {
	int i, j, ni, nj;
public:
    vector<bool> camelMatch(vector<string>& queries, string pattern) {
        nj = pattern.size();
        vector<bool> ans;
        for(auto& str : queries)
        	ans.push_back(match(str,pattern));
        return ans;
    }

    bool match(string& str, string& pattern)
    {
    	i=j=0;
    	ni = str.size();
    	while(i < ni && j < nj)
    	{
    		if(str[i]==pattern[j])
    		{
    			i++,j++;//相同都移动
    		}
    		else//不相同
    		{
    			if(isupper(str[i]))//字符是大写,匹配不了
    				return false;
    			else
    				i++;//是小写,往后移动
    		}
    	}
    	if(i < ni)//pattern 匹配完了
    	{
    		while(i < ni)
    			if(isupper(str[i++]))//主串还有大写,错
    				return false;
    	}
    	if(j < nj)//模式串没匹配完,错
    		return false;
    	return true;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档