面试题35:第一个只出现一次的字符 题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。(2006年google的一道笔试题。)...pid=1283 牛客网OJ 改编: 在一个字符串(1第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始。...输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。...} } return -1; // if(str.size() == 0) return -1; } }; 华为OJ034-找出字符串中第一个只出现一次的字符...tpId=37&tqId=21282 时间限制:1秒 空间限制:32768K 参与人数:157 本题知识点: 字符串 题目描述 找出字符串中第一个只出现一次的字符 接口说明 原型: char FindChar
只出现一次的数字 题目详情 代码(直接来异或) class Solution { public: int singleNumber(vector& nums) { //...根据:某个元素只出现一次 直接来异或 int ret=0; for(auto e:nums) { ret=ret^e;...,那么两次出现的数异或后结果为0;如果一个数只出现一次,那么异或后结果为该数本身。...利用上述性质,遍历nums中的所有元素,并进行异或运算,最终得到的结果就是只出现一次的元素。 2. 118....删除有序数组中的重复项 传送门 题目详情 代码 class Solution { public: int removeDuplicates(vector& nums) {
i:表示不区分大小写模式 m:表示多行模式,即在到达文本末尾时还会继续查找下一行中是否与模式匹配的项。 正则表达式中的元字符 这些元字符在正则表达式都有一种或者多种用途。...[]() 正则表达式实例方法 exec() 参数:接收一个参数,即要应用模式的 字符串。 返回:第一个匹配项信息的数组,或者在没有匹配项的情况下返回null。...返回的数组包含两个额外的信息:index和input。index匹配项在字符串中的位置,input表示应用正则表达式的字符串。...在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项) var text = 'mom and dad and baby'; var...但是在同一个字符串上多次调用exec()则会在字符串中查找新匹配项。而在不设置全局标志的情况下,在同一个字符串上多次调用exe(),始终返回第一个匹配项信息。
图片像dom的拖拽,如果用消抖的话,就会出现卡顿的感觉,因为只在停止的时候执行了一次,这个时候就应该用节流,在一定时间内多次执行,会流畅很多手写简版使用时间戳的节流函数会在第一次触发事件时立即执行,以后每过...(6)正则和 JSON 方法 在第4种方法中已经使用 toString 方法,其中仍然采用了将 JSON.stringify 的方法先转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号,最后再利用...,它实现的原理很简单:先定义一个包含原始数组第一个元素的数组,然后遍历原始数组,将原始数组中的每个元素与新数组中的每个元素进行比对,如果不重复则添加到新数组中,最后返回新数组;因为它的时间复杂度是O(n...,但是这个执行不是真的到了时间立即执行,它真正的作用是每隔一段时间将事件加入事件队列中去,只有当当前的执行栈为空的时候,才能去从事件队列中取出事件执行。...setInterval(function, N)//即:每隔N秒把function事件推到消息队列中图片上图可见,setInterval 每隔 100ms 往队列中添加一个事件;100ms 后,添加 T1
地址 地址可以是如下的形式 1、number 表示行号 2、first~step 表示从first(数字)行开始,每隔step(数字)行 3、$ 表示最后一行(注意当出现在正则表达式中时表示行尾) 4、...如果第二个地址是个正则表达式,则不会对第一个地址匹配行进行第二个地址的匹配;如果第二个地址是行号,但小于或等于第一个地址匹配行行号,则只会匹配一行(第一个地址匹配行)。...8、0,/regexp/ 这种情况下,正则表达式regexp会在第一行就开始进行匹配。只有第二个地址是正则表达式时,第一个地址才能用0。 9、addr1,+n表示匹配地址addr1和其后的n行。...如果是单地址,则每个匹配行都输出,如果是地址范围,则只输出一次。...b.txt中第二列相同的行,并追加b.txt中对应的两个日期列。
最近,看完了《JavaScript忍者秘籍》这本书,对正则有了全新的认识,自己也尝试了总结了一些,在开发中,让好多事情变得事半功倍。 正则表达式是一个拆分字符串并查询相关信息的过程。...; i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写; m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项...,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null。...注意:在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)。...匹配开始和匹配结束 如果正则表达式第一个字符是“^”,则表示要从字符串的开头进行匹配。如果正则表达式最后一个字符是“$”,则表示必须出现在字符串的结尾。
若要在搜索章节标题时使用定位点,下面的正则表达式匹配一个章节标题,该标题只包含两个尾随数字,并且出现在行首: /^Chapter [1-9][0-9]{0,1}/ 真正的章节标题不仅出现行的开始处,而且它还是该行中仅有的文本...它即出现在行首又出现在同一行的结尾。下面的表达式能确保指定的匹配只匹配章节而不匹配交叉引用。通过创建只匹配一行文本的开始和结尾的正则表达式,就可做到这一点。...反向引用 对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。...来重写捕获,忽略对相关匹配的保存。 反向引用的最简单的、最有用的应用之一,是提供查找文本中两个相同的相邻单词的匹配项的能力。...正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。\1 指定第一个子匹配项。字边界元字符确保只检测整个单词。
一,什么是正则表达式 正则表达式(Regular Expression)是一种用于处理字符串的强大工具,它可以用来检查字符串是否符合某种模式、提取字符串中的特定部分或者替换字符串中的某些内容。...,如是否忽略大小写、是否多行匹配等。...hello world." print(re.search('llo', a)) 输出: 3,findall() findall()函数用于在字符串中查找所有与正则表达式匹配的子字符串,并返回一个包含所有匹配项的列表...匹配成功则返回第一个匹配项(包含信息),匹配失败则返回None ●search(): 在字符串中搜索与正则表达式匹配的子字符串,返回第一个匹配项(包含信息),失败返回None。...●findall(): 在字符串中查找所有与正则表达式匹配的子字符串,并返回一个包含所有匹配项的列表,找不到则返回一个空列表。 三,元字符匹配 正则表达式的核心是用于构建模式的元字符。
replace(regExp, replaceWith)搜索正则表达式regExp出现的情况,然后使用replaceWith字符串替换所有匹配项。...必须启用正则表达式上的全局标志,才能使replace()方法替换模式出现的所有内容,我们可以这样做: 在正则表达式文字中,将g附加到标志部分:/search/g。...虽然正则表达式替换了所有出现的字符串,但在我看来,这种方法过于繁琐。 2.1 字符串中的正则表达式 当在运行时确定搜索字符串时,使用正则表达式方法不方便。...2.2 字符串的 replace() 方法 如果replace(search, replaceWith)的第一个参数是字符串,那么该方法只替换search的第一个结果。...,除了两件事: 如果search参数是一个字符串,那么replaceAll()用replaceWith替换所有出现的search,而replace()只替换第一次出现的search。
匹配模式标记 g :全局模式,表示查找字符的全部内容 i :不区分大小写,表示查找匹配时忽略pattern和字符串的大小写 m :多行模式,表示查找到一行文本末尾会继续查找 y :粘附模式,表示只查找从...[0-9] \D 匹配一个非数字字符 等价于[^0-9] let pa = /[bc]at/i 匹配第一个"bat"或"cat" ,忽略大小写 let pa = /\[bc]at.../i 匹配第一个"[bc]at" 忽略大小写 let pa = /.at/gi 匹配所有以"at"结尾的三字符组合,忽略大小写 let pa = /\.at/gi...比如我不需要知道正则表达式中是否使用了g。 global:布尔值,表示是否设置了 g 标记。 ignoreCase:布尔值,表示是否设置了 i 标记。...5.2.2 RegExp实例方法 这里我们介绍两个方法 exec() 和 test() exec() 参数:要应用模式的字符串 需求:内部的匹配项"and baby",内部的 "and dad" 或
正则表达式是描述一组字符串特征的模式,用来匹配特定的字符串 主要分三个部分:基本语法、RegExp对象的方法、JS中支持正则表达式的String对象方法 一、基本语法 在JS中,正则表达式为对象,用如下两种方式定义...IgnorePatternWhitespace(忽略空白) 忽略表达式中的非转义空白并启用由#标记的注释。 ExplicitCapture(显式捕获) 仅捕获已被显式命名的组。...{} 特殊 限定次数 ^ 位置 匹配字符串的开始 $ 位置 匹配字符串的结束 \b 位置 单词的开头或结尾,也就是单词的分界处 * 量词 重复零次或更多次(任意次) + 量词 重复一次或更多次(至少出现一次...量词 重复零次或一次(最多出现一次) {n} 量词 重复n次,n为数字 {n,} 量词 重复n次到无数次 {n,m} 量词 重复n次到m次 ....() 替换:stringObject.replace(regexp/str,str/function); 该方法用于在字符串中使用一些字符替换另一些字符,或者替换一个与正则表达式匹配的子字符串;默认只替换第一个匹配的字符
options可选参数: -i :忽略大小写 -c :打印匹配的行数 -l :从多个文件中查找包含匹配项 -v :查找不包含匹配项的行 -n:打印包含匹配项的行和行标 正则表达式参数...: \ 忽略正则表达式中特殊字符的原有含义 ^ 匹配正则表达式的开始行 $ 匹配正则表达式的结束行 \匹配正则表达式的行开始 \>; 到匹配正则表达式的行结束...可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如: # 替换所有匹配关键字 sed 's/原字符串/替换字符串/g' 5....# 替换文件中的所有匹配项 sed -i 's/原字符串/替换字符串/g' filename 8....关系表达式:可以用下面运算符表中的关系运算符进行操作,可以是字符串或数字的比较,如$2>%1选择第二个字段比第一个字段长的行。 模式匹配表达式:用运算符~(匹配)和~!(不匹配)。
: 出现 0 次或 1 次 如果在一个模式中不加数量限定符则表示出现一次且仅出现一次。...注意: -n 选项会抑制默认的打印 其中的地址范围可以是行号或者正则 默认的模式匹配不支持扩展正则,只支持基本正则。...Github # 105,Chris Wanstrath,Github # 106,Mattt Thompson,Heroku # 107,Ask Solem Hoel,VMware # 替换第一行中的首个匹配项...1 提取 括号括起来的正则表达式所匹配的字符串会可以当成变量来使用,sed 中使用的是 \1,\2。...,并只输出匹配(或者不匹配)的行。
当蝙蝠侠和蒂娜·菲都出现在搜索字符串中时,匹配文本的第一次出现将作为Match对象返回。...'Batmobile',而mo.group(1)只返回第一个括号组'mobile'内的部分匹配文本。...使用加号匹配一个或多个 *表示“匹配零个或多个”,而+(加号)表示“匹配一个或多个”与星号不同,星号不要求其组出现在匹配的字符串中,加号前面的组必须至少出现一次。它不是可选的。...每个元组代表一个找到的匹配,它的项是正则表达式中每个组的匹配字符串。...正则表达式字符串中的注释规则与常规 Python 代码相同:忽略符号#和其后到行尾的所有内容。此外,正则表达式的多行字符串中的多余空格不被视为要匹配的文本模式的一部分。
正则表达式.pptx 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等...定位符 定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。...反向引用 对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。...来重写捕获,忽略对相关匹配的保存。 反向引用的最简单的、最有用的应用之一,是提供查找文本中两个相同的相邻单词的匹配项的能力 捕获的表达式,正如 [a-z]+ 指定的,包括一个或多个字母。...正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。\1 指定第一个子匹配项。 单词边界元字符确保只检测整个单词。
正则表达式备忘单 测试正则表达式 测试多种模式 忽略大小写 提取第一个匹配项到变量 提取数组中的所有匹配项 匹配任何字符 匹配单个角色有多种可能性 匹配字母 匹配特定的数字和字母 匹配一个未知字符 匹配连续出现一次或多次的字符...匹配连续出现零次或多次的字符 延迟匹配 匹配起始字符串模式 匹配结尾字符串模式 匹配所有字母和数字 匹配除字母和数字以外的所有内容 匹配所有数字 匹配所有非数字 匹配空格 匹配非空格 匹配字符数 匹配的最少字符数...const testString = 'We use the i flag to iGnOrE CasE'; caseInsensitiveRegex.test(testString); // true 提取第一个匹配项到变量...match(/hello/i); // "Hello" 提取数组中的所有匹配项 使用g标志 const testString = "Repeat repeat rePeAT"; const regexWithAllMatches...= /[^aeiou]/gi; const allCharsNotVowelsOrNumbers = /[^aeiou0-9]/gi; 匹配连续出现一次或多次的字符 使用+符号 const oneOrMoreAsRegex
这样一来,花的时间就比较长,有可能前一次代码还没有执行完,后一次代码就被添加到队列了。也会到时定时器变得不准确,甚至出现同一时间执行两次的情况。...// 做一个网络轮询,每一秒查询一次数据。...所以真正何时执行代码的时间是不能保证的,取决于何时被主线程的事件循环取到,并执行。...setInterval(function, N) //即:每隔N秒把function事件推到消息队列中 setinterval-1.png 上图可见,setInterval 每隔 100ms 往队列中添加一个事件...); } 做过的朋友都知道:是一次输出了 5 个 5 ; 那么问题来了:是每隔 1 秒输出一个 5 ?
但是大多数 特殊字符 在中括号表达式内出现时失去本来的意义,并恢复为普通字符。...ES5在第一个参数是正则时,不允许此时使用第二个参数,会报错。 // 返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。 // 下面代码返回”i”。...String.replace() 作用:查找并替换字符串。 第一个参数:字符串或正则表达式, 第二个参数:要进行替换的字符串,也可以是函数。...全局检索:尽管是全局匹配的正则表达式,但是exec方法只对指定的字符串进行一次匹配。但是可以反复调用来实现全局检索。...\W 与\w相反,即 [^A-Za-z0-9_] 限定符(量词字符) 显示限定符位于大括号 {} 中,并包含指示出现次数上下限的数值;*+? 这三个字符属于单字符限定符: {n} 正好匹配 n 次。
re.compile(pattern[, flags]) pattern : 一个字符串形式的正则表达式 flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为: re.I忽略大小写...---- search() 另一种方法,直接使用re.search()方法,扫描整个字符串并返回第一个成功的匹配。...希望匹配许多表达式中的一个时,就可以使用它。例如,正则表达式r'Jim|云朵'将匹配'Jim'或'云朵'。如果都出现在被查找的字符串中,则匹配第一次出现的文本。...它可以完全不存在,或一次又一次地重复。 +(加号)则意味着"匹配一次或多次"。星号不要求分组出现在匹配的字符串中,但加号不同,加号前面的分组必须"至少出现一次"。...re.sub() re.sub用于替换字符串中的匹配项,即将某个字符串中所有匹配正则表达的部分替换成其他字符串。
元字符在正则表达式中都有一种或多种特殊功能,所以要匹配元字符本身就需要用反斜杠转义 // 匹配第一个“bat”或“cat”,忽略大小写 let pattern1 = /[bc]at/i; // 匹配第一个...# RegExp实例方法 exec(),主要用于配合捕获组使用,参数是要应用模式的字符串 如果找到了匹配项,则返回包含第一个匹配信息的数组 如果没有找到匹配项则返回null 返回的数组实例包含两个额外的属性...:index和input index是字符串中匹配模式的起始位置 input是要查找的字符串 数组的第一个元素时匹配整个模式的字符串,其他元素时与表达式中的捕获组匹配的字符串 如果模式中没有捕获组,则数组只包含一个元素...字符串中出现在lastMatch前面的文本 rightContext $' input字符串中出现在lastMatch后面的文本 - $1~$9 存储最多9个捕获组的匹配项 let text = "this...console.log(RegExp.lastParen); // s 捕获组的上一次匹配 } # 模式局限 缺少特性 \A和\Z锚(分别匹配字符串的开始和末尾) 联合及交叉类 原子组 x(忽略空格
领取专属 10元无门槛券
手把手带您无忧上云