简介 用一个可伸缩的窗口遍历字符串,时间复杂度大致为O(n).适用于“寻找符合某条件的最小子字符串”题型. 题目 链接 求某字符串T中含有某字符串S的所有字符的最小子字符串.如果不存在则返回"". 算法 用左右两个指针维护一个窗口. 将右指针右移,直至窗口满足条件,包含S中所有字符. 将左指针左移,直至窗口不再满足条件.此过程中每移动一次,都更新最小子字符串. 重复1.2两步. WHY IT WORKS 设想一个最naive的算法如何遍历T中的所有子字符串.以T中的每一个字符为子字符串…
PHP preg_replace() 正则替换,与JavaScript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素. preg_replace (正则表达式, 替换成, 字符串, 最大替换次数[默认-1,无数次], 替换次数) 大部分语言的正则表达式都是差不多的,不过也有细微的差异. PHP 正则表达式 正则字符 正则解释 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个向后引用.或一个八进制转义符.例如,“\n”匹配字符“n”.“\\n”匹…
PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素.  需要用程序处理的数据并不总是预先以数据库思维设计的,或者说是无法用数据库的结构去存储的.  比如模版引擎解析模版.垃圾敏感信息过滤等等.  一般这种情况,我们用正则按我们的规则去匹配preg_match.替换preg_replace.  但一般的应用中,无非是些数据库CRUD,正则摆弄的机会很少.  根据前面说的,两种场景:统计分析,…
后缀数组很久很久以前就出现了,具体的概念读者自行搜索,小菜仅略知一二,不便讨论. 本文通过寻找两个字符串的最长公共子字符串,演示了后缀数组的经典应用. 首先需要说明,小菜实现的这个后缀数组算法,并非标准,只是借鉴了其中的思想. 小菜实现的算法,有两个版本,第一个是空间换时间,第二个是时间换空间. 空间换时间版本 /* 利用后缀数组获取两个字符串最长公共子字符串 空间换时间版本 @params s1 String,要分析的字符串 s2 String,要分析的字符串 norepeat Boolean…
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节省空间,数据的组织结构更清晰,解耦和程度更高,但是这些表本质上是不是还是一个整体啊,是一个项目所有的数据,那既然分表存了,就要涉及到多个表连接查询了,比如说员工信息一张表,部门信息一张表,那如…
单表: HAVING过滤 二次筛选 只能是group by 之后的字段 1.查询各岗位内包含的员工个数小于2的岗位名.岗位内包含员工名字.个数 select post,group_concat(name),count(1) from employee group by post having  count(1)<2; 2. 查询各岗位平均薪资大于10000的岗位名.平均工资 select post,avg(salary) as a from employee group by post havi…
一,给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成. 输入: "aba" 输出: False 输入: "abcabcabcabc" 输出: True 解释: 可由子字符串 "abc" 重复四次构成. (或者子字符串 "abcabc&quo…
描述:有个字符串$sd1#111$svda123!!!221&eSSDSDG,包含特殊字符.数字和字母,输出最长的子字符串和他的长度#例如上面的字符串包含数字字母的字符串是svda123,长度是7需求分析:1.先把这个字符串里面的特殊字符替换成一个固定的字符串, . repalce2.按照这个固定的字符串分割 spilt3.list,循环这个list,判断list的每个元素是否包含数字和字母4.判断长度,最长的留下了,打印5.用了俩list,一个list存符合条件的字符串,第二list存字符串的…
一.有个字符串 str= '$sd1#111$svda123!!!221&eSSDSyyyyyyDG^svda121^svda124^1111111111111' 包含特殊字符.数字和字母,输出最长的子字符串和他的长度 例如上面的字符串同时包含数字和字母的字符串是svda123,长度是7 思路:1.先把特殊字符转换成固定字符#2.按照固定字符分割字符串生成lis3.获取lis中每一个的长度并生成第二个用来存储长度的len_lis4.获取长长度然后统计最长长度的数量5.如果只有数量是1的话直接通过…
利用replace替换字符串时,在正常使用情况下默认只能更改匹配到的第一个字符 var a=new String("fffffddd"); console.log(a.replace("f","a")); 更改后的字符串为:affffddd; 利用正则表达式可以使全部符合条件的字符都更改 var a=new String("fffffddd"); console.log(a.replace(/f/g,"a"…