• 【leetcode】1023. Camelcase Matching


    题目如下:

    A query word matches a given pattern if we can insert lowercaseletters to the pattern word so that it equals the query. (We may insert each character at any position, and may insert 0 characters.)

    Given a list of queries, and a pattern, return an answer list of booleans, where answer[i] is true if and only if queries[i] matches the pattern.

    Example 1:

    Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB"
    Output: [true,false,true,true,false]
    Explanation: 
    "FooBar" can be generated like this "F" + "oo" + "B" + "ar".
    "FootBall" can be generated like this "F" + "oot" + "B" + "all".
    "FrameBuffer" can be generated like this "F" + "rame" + "B" + "uffer".

    Example 2:

    Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBa"
    Output: [true,false,true,false,false]
    Explanation: 
    "FooBar" can be generated like this "Fo" + "o" + "Ba" + "r".
    "FootBall" can be generated like this "Fo" + "ot" + "Ba" + "ll".
    

    Example 3:

    Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBaT"
    Output: [false,true,false,false,false]
    Explanation: 
    "FooBarTest" can be generated like this "Fo" + "o" + "Ba" + "r" + "T" + "est".
    

    Note:

    1. 1 <= queries.length <= 100
    2. 1 <= queries[i].length <= 100
    3. 1 <= pattern.length <= 100
    4. All strings consists only of lower and upper case English letters.

    解题思路:这种模式匹配的题目,感觉还是用正则表达式简单些。例如 pattern = "FoBaT",转换成正则表达式的pattern="^[a-z]*F[a-z]*o[a-z]*B[a-z]*a[a-z]*T[a-z]*$"。

    代码如下:

    class Solution(object):
        def camelMatch(self, queries, pattern):
            """
            :type queries: List[str]
            :type pattern: str
            :rtype: List[bool]
            """
            res = []
            import re
            rePattern = '^[a-z]*'
            for i,v in enumerate(pattern):
                rePattern += v
                rePattern += '[a-z]*'
            #rePattern = rePattern[:-2]
            rePattern += '$'
            for i in queries:
                r = re.search(rePattern, i)
                if r == None:
                    res.append(False)
                    continue
                r = r.group()
                subq = i[len(r):]
                res.append(len(subq) == 0 or subq.islower())
            return res
  • 相关阅读:
    Redis系列一
    浅谈Java开发三层架构
    plsql乱码问题
    eclipse工作空间的常用设置
    《经典面试系列》- 索引
    《数据库优化》- 存储过程
    遍历Map的四种方式(Java)
    调用微信js sdk
    根据多个成对的cron表达式生成的时间段,合并
    关于Map集合注意事项
  • 原文地址:https://www.cnblogs.com/seyjs/p/10673756.html
Copyright © 2020-2023  润新知