zoukankan      html  css  js  c++  java
  • 返回字符串中最长连续相同字串的长度---正则实现与JavaScript实现

    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
    都读到最后了、留下个建议如何
  • 相关阅读:
    Linux开发初探
    Linux开发初探
    电脑使用说明书
    电脑使用说明书
    Delegates, Events, and Anonymous Methods 委托、事件与匿名方法
    CSS haslayout
    js与flash结合使用
    sgen.exe" exited with code 1.解决方法
    selenium
    selenium支付高版本的FireFox
  • 原文地址:https://www.cnblogs.com/linjunfu/p/10763661.html
Copyright © 2011-2022 走看看