[Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching

A query word matches a given pattern if we can insert lowercase letters 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 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)

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

示例 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. 1 <= queries.length <= 100
  2. 1 <= queries[i].length <= 100
  3. 1 <= pattern.length <= 100
  4. 所有字符串都仅由大写和小写英文字母组成。


Runtime: 8 ms

Memory Usage: 19.9 MB

 1 class Solution {
 2     func camelMatch(_ queries: [String], _ pattern: String) -> [Bool] {
 3         var ans:[Bool] = [Bool]()
 4         for q in queries
 5         {
 6             ans.append(go(q,pattern))
 7         }
 8         return ans
 9     }
10
11     func go(_ q:String,_ p:String) -> Bool
12     {
13         var pos:Int = 0
14         var arrP:[Character] = Array(p)
15         for c in q
16         {
17             if pos < p.count && c == arrP[pos]
18             {
19                 pos += 1
20             }
21             else if c < "a" || c > "z"
22             {
23                 return false
24             }
25         }
26         return pos == p.count
27     }
28 }

原文地址:https://www.cnblogs.com/strengthen/p/10668058.html

时间: 2024-08-01 14:13:06

[Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching的相关文章

[译] Swift 的响应式编程

原文  https://github.com/bboyfeiyu/iOS-tech-frontier/blob/master/issue-3/Swift的响应式编程.md 原文链接 : Reactive Swift 原文作者 : Agnes Vasarhelyi 译文出自 : 开发技术前线 www.devtf.cn 译者 :Mr.Simple 校对者:Lollypo 状态 : 完成 让我们首先回到Apple刚推出Objective-C的继任者-Swift的时候,那真是一个非比寻常的时刻. Sir

(转) 三种编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法)

三种编程命名规范(匈牙利命名法.驼峰式命名法.帕斯卡命名法) 1 . 匈牙利命名: 开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写. ex: int iMyAge; "i"是int类型的缩写: char cMyName[10]; "c"是char类型的缩写: float fManHeight; "f"是float类型的缩写: 其他: 前缀类型 a b by c cb cr cx,cy dw fn h i l l

三种编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法)

1. 1 . 匈牙利命名: 开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写. ex: int iMyAge; "i"是int类型的缩写: char cMyName[10]; "c"是char类型的缩写: float fManHeight; "f"是float类型的缩写: 其他: 前缀类型 a b by c cb cr cx,cy dw fn h i l lp m_ n np p s sz w (一一对应关系) 

转载——三种编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法)

1 . 匈牙利命名: 开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写. 比如: int iMyAge; "i"是int类型的缩写: char cMyName[10]; "c"是char类型的缩写: float fManHeight; "f"是float类型的缩写: 其他: 前缀类型 a b by c cb cr cx,cy dw fn h i l lp m_ n np p s sz w (一一对应关系) 数组

PHP把下划线分隔命名的字符串与驼峰式命名互转

最近项目使用symfony框架,这个框架对数据库的操作在这个团队里使用的是ORM进行操作,说实话使用ORM的开发效率和运行效率不一定高多少,到是它的实体命名和现有数据库字段的命名不太一样,ORM实体属性命名是驼峰式的,数据库字段是下划线分隔,这就产生了字段映射的过程.当碰到需要手动写实体必须的数组时,字段映射是一件很头疼的事情,尤其是字段比较多的时候,写到你想吐.到这就产生一个问题就是把以下划线分隔的命名字段转换成驼峰式命名.小弟我也很懒,在网上找了半天,也没找到一个具体的PHP Demo,有的

使用PHP把下划线分隔命名的字符串 转换成驼峰式命名方式 , 把下划线后面的第一个字母变成大写

最近项目使用symfony框架,这个框架对数据库的操作在这个团队里使用的是ORM进行操作,说实话使用ORM的开发效率和运行效率不一定高多少,到是它的实体命名和现有数据库字段的命名不太一样,ORM实体属性命名是驼峰式的,数据库字段是下划线分隔,这就产生了字段映射的过程.当碰到需要手动写实体必须的数组时,字段映射是一件很头疼的事情,尤其是字段比较多的时候,写到你想吐.到这就产生一个问题就是把以下划线分隔的命名字段转换成驼峰式命名.小弟我也很懒,在网上找了半天,也没找到一个具体的PHP Demo,有的

Mybatis 开启驼峰式命名规则的映射

配置了驼峰命名之后就不需要 resultMap 来进行映射了 多表联合查询也是可以的,只需要实体类里面的属性要和sql里面的要对应起来 比如  在sql中的 create_time 字段 在实体类里面 对应 createTime 只要遵循规则就可以省去不少配置映射的时间 步骤 1.首先建立一个spring-mybatis-config.xml文件 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE con

opencv笔记(二十二)——模板匹配 template matching

模板匹配就是在给定一幅图像和一幅模板(一般模板比图像的尺寸小很多)的情况下,找到这个图像中最最相似于模板的位置,比如 第一幅是给定的图片,第二幅是模板,第三幅就是搜索到的匹配的位置. 这个搜索的过程,我没有在源码中求索,但是根据tutorial,应该是采用sliding window的方法,利用滑动的窗口,逐像素进行匹配.这个逐像素的意思,就是锚定某个像素之后,在这个像素的右边和下方,以template的宽度和高度的距离的范围内,进行模板与图像的相似度计算. 这种方法和行人检测中常用的方法类似.

正則表達式匹配号码

由于项目中要匹配手机号.所以接触了正則表達式,没有深入学习,直说明一个简单的应用. 在java里,匹配要用matches(表达式字符串)方法. 表达式要以^开头,以$结尾. 以下是基本的语法表: 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符. 比如,"n"匹配字符"n"."\n"匹配换行符.序列"\\"匹配"\"."\("匹配"(". ^ 匹