返回字符串中最长连续相同字串的长度---正则实现与JavaScript实现
let str = 'AAABBAACCAAAADDE'
function continuousString(str) {
let finalObj = {}
let tempObj = {}
let count = 0
for (let i = 0; i < str.length; i++) {
const code = str[i]
if (code === str[i + 1]) { // 初次时候,两个相等
if (!tempObj[code]) {
tempObj[code] = 2 // 初次时候,两个相等就加 2
} else {
tempObj[code] += 1 // 后面相等加 1
}
} else {
if (!finalObj[code]) { // 不相等情况
finalObj[code] = 1 // 自己加 1
}
if (finalObj[code] < tempObj[code]) { // 和临时存储的数值进行对比,如果小于,则进行赋值
finalObj[code] = tempObj[code]
}
tempObj[code] = 0 // 设置为 0,因为连续相等这个条件已经断开了
}
} console.log('finalObj :', finalObj) // finalObj : { A: 4, B: 2, C: 2, D: 2, E: 1 }
for (const key in finalObj) {
const item = finalObj[key]
if (count < item) {
count = item
}
}
console.log('count :', count) // count : 4
return count
}
continuousString(str)
let r = 'AAABBCCAAAA DDE666FF' // 匹配模式:单个字符+第一个括号中的匹配值( * —— 有零个或者多个)
let match = r.match(/(\w)\1*/g) --- 正则中\1的用法---反向引用
console.log('match :', match) // match : [ 'AAA', 'BB', 'CC', 'AAAA', 'DD', 'E', '666', 'FF' ] match.sort((a, b) => {
return a.length < b.length // 从大到小
})
console.log('match :', match) // match : [ 'AAAA', 'AAA', '666', 'BB', 'CC', 'DD', 'FF', 'E' ]
console.log('连续相同字串长度 :', match[0].length) // 连续相同字串长度 : 4
返回字符串中最长连续相同字串的长度---正则实现与JavaScript实现的更多相关文章
- Interview----最长连续乘积字串
题目描述: 给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8. 也就是说,上述数组中,3 0.5 8这3个数的乘积3*0 ...
- 最长公共字串(LCS)最长连续公共字串(LCCS)
链接1:http://blog.csdn.net/x_xiaoge/article/details/7376220 链接2:http://blog.csdn.net/x_xiaoge/article/ ...
- leetcode-3 最长无重复字串
3. Longest Substring Without Repeating Characters 题面 Given a string, find the length of the longest ...
- 字符串中连续出现最多的子串 & 字符串中最长反复子串
字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀 ...
- 算法:Manacher,给定一个字符串str,返回str中最长回文子串的长度。
[题目] 给定一个字符串str,返回str中最长回文子串的长度 [举例] str="123", 1 str="abc1234321ab" 7 [暴力破解] 从左 ...
- c# 字符串中多个连续空格转为一个空格
#region 字符串中多个连续空格转为一个空格 /// <summary> /// 字符串中多个连续空格转为一个空格 /// </summary> /// <param ...
- 基于python 3.5 所做的找出来一个字符串中最长不重复子串算法
功能:找出来一个字符串中最长不重复子串 def find_longest_no_repeat_substr(one_str): #定义一个列表用于存储非重复字符子串 res_list=[] #获得字符 ...
- 【python】获取列表中最长连续数字
最近开发遇到一个功能需求,目的是要获取一个AI分析结果中最长连续帧,比如一个视频中连续3帧有人,那么我认为这个视频就是有人,我就要判断这个视频帧列表中是否有连续的三帧有人.本质就是获取列表中的最长连续 ...
- 7-19 计算有n个字符串中最长的字符串长度 (40 分)
编写程序,用于计算有n(1<n<10)个字符串中最长的字符串的长度.前导空格不要计算在内! 输入格式: 在第一行中输入n,接下的每行输入一个字符串 输出格式: 在一行中输出最长的字符串的长 ...
随机推荐
- 高德地图的权限Activity代码
/** * */package com.amap.location.demo; import java.lang.reflect.Method;import java.util.ArrayList;i ...
- input | button | textarea 元素的checked, disabled,hidden属性控制
这三种元素涉及到的checked, disabled,hidden属性的控制方法如下 一.attribute方法: //以下3行,都会影响HTML的( checked | disabled | hid ...
- webpack devServer配置项的坑
本文所用webpack版本为4+,阅读本章的同学请注意区分. webpack默认不需要配置文件 但是你仍可在项目的node_module目录同级目录建立一个webpack.config.js文件进行配 ...
- Boost Download
{ //https://www.boost.org/users/history/version_1_71_0.html }
- thinkphp 配置参考
惯例配置 应用设定 'APP_USE_NAMESPACE' => true, // 应用类库是否使用命名空间 3.2.1新增 'APP_SUB_DOMAIN_DEPLOY' => fals ...
- A*启发式搜索基础
A*启发式搜索基础 传统的搜索方式是盲目搜索,即到每一步的时候并没有对每种情况进行有效的区分,这样的结果是浪费了大量的时间,对很多没有必要的数据进行了搜索. 而A*算法则在搜索的过程中会选取认为“最优 ...
- excrt——cf687b
excrt的理解 问对于方程组x = ai % ci 的 通解 x+tM, (x+tM) % k 是否有唯一值 看tm%k是否==0即可 #include<cstdio> #include ...
- Vlan的相关知识点收纳
Q.思科Vlan的上限个数是多少? VLAN的范围:根据平台和软件版本不同,Cisco交换机最多支持4096个VLAN.VLAN号共有4096个,0-4095 0,4095:这两个号保留,仅限系 ...
- Golang flag包使用详解(一)
概述 flag包提供了一系列解析命令行参数的功能接口 命令行语法 命令行语法主要有以下几种形式 -flag //只支持bool类型 -flag=x -flag x //只支持非bool类型 以上语法对 ...
- 记录解决java.io.IOException: Server returned HTTP response code: 500 for URL:xxxxxxxx
踩坑经历 因为项目需要去对接别的接口,使用URLConnection POST请求https接口,发送json数组时遇到java.io.IOException: Server returned HTT ...