zoukankan      html  css  js  c++  java
  • 92 驼峰式匹配(1023)

    作者: Turbo时间限制: 1S章节: 其它

    晚于: 2020-09-09 12:00:00后提交分数乘系数50%

    问题描述 :

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

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

    示例 1:

    输入:pattern = "FB",queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"]

    输出:[true,false,true,true,false]

    解释:

    "FooBar" 可以这样生成:"F" + "oo" + "B" + "ar"。

    "FootBall" 可以这样生成:"F" + "oot" + "B" + "all".

    "FrameBuffer" 可以这样生成:"F" + "rame" + "B" + "uffer".

    示例 2:

    输入:pattern = "FoBa",queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"]

    输出:[true,false,true,false,false]

    解释:

    "FooBar" 可以这样生成:"Fo" + "o" + "Ba" + "r".

    "FootBall" 可以这样生成:"Fo" + "ot" + "Ba" + "ll".

    示例 3:

    输出:pattern = "FoBaT",queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"]

    输入:[false,true,false,false,false]

    解释: 

    "FooBarTest" 可以这样生成:"Fo" + "o" + "Ba" + "r" + "T" + "est"

    输入说明 :

    首先输入字符串pattern,长度<=100。

    然后输入待查询列表 queries的长度n,n<=10。

    最后输入n个字符串,为queries中的待查询项,每项的长度<=100。

    所有字符串都仅由大写和小写英文字母组成。

    输出说明 :

    输出answer列表,每个answer[i] 为true或false,answer[i] 之间以空格分隔,最前和最后无空格。

    输入范例 :

    输出范例 :

    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    using namespace std;
    //设置双指针i[p]==pattern[q] 说明符合继续王后移动
    //i[p]!=pattern[q] ,并且i[p]是大写,说明不匹配
    // i[p]!=pattern[q] ,并且i[p]是小写,p++继续判断 
    class Solution {
    public:
        vector<bool> camelMatch(vector<string>& queries, string pattern) 
        {
            vector<bool> res;
            for(auto i:queries)
            {
                int p=0,q=0,flag=0;
                while(p<i.size())
                {
                    if(i[p]==pattern[q])
                    {
                        p++;q++;
                    }
                    else if(isupper(i[p]))
                    {
                        flag=1;
                        break;
                    }
                    else
                        p++;
                }
                if(flag||q<pattern.size())//flag=1或者pattern还没被匹配完,都是错误的 
                    res.push_back(false);
                else
                    res.push_back(true);
            }
        return res;
        }
    };
    int main()
    {
        string s,str;
        vector<string> words;
        int n;
        cin>>s;
        cin>>n;
        for(int i=0; i<n; i++)
        {
            cin>>str;
            words.push_back(str);
        }
        vector<bool> res=Solution().camelMatch(words,s);
        for(int i=0; i<res.size(); i++)
        {
            if (i> 0)
                cout<<" ";
            if(res[i])
                cout<<"true";
            else
                cout<<"false";
        }
    
        return 0;
    }
  • 相关阅读:
    Silverligh OOB一直更新
    Silverlight使用通过服务绑定数据的控件
    vue prop不写value的处理逻辑
    .NET Core Http请求(GET、POST、上传文件并携带参数)
    流媒体服务器与web客户端插件的配置与搭建(Darwin Streaming server + Quictime plugin)
    目录
    margin标记可以带一个、二个、三个、四个参数,各有不同的含义。
    Asp.Net中几种相似数据绑定标记符号的解释及用法
    火狐自动换行 有空格
    xml
  • 原文地址:https://www.cnblogs.com/zmmm/p/13675482.html
Copyright © 2011-2022 走看看