• 最长回文子串


    使用中心扩散的方法 : 从中间开始,向两边同时遍历,当左右元素一样的时候,代表满足回文条件。 一直循环这个过程去判断,直到左右不相等,截取这一段就好了。

    注意: 要同时考虑字符串为奇数,和字符串为偶数的情况,但不论是奇数还是偶数,都进行revert(i,i)和revert(i,i+1),因为我们需要只是最大回文子串

    var longestPalindrome = function(s) {
        let max = ''
        let left = null
        let right = null
    
        //遍历整个字符串,当字符串长度为奇数的时候,left = right = i
        //当字符串长度为偶数的时候, left = i , right = i+1
        for(let i=0;i<s.length;i++){
            //偶数奇数情况都处理,反正只需要最大回文子串
            revert(i,i)
            revert(i,i+1)
        }
        
    
        function revert(left,right){
            while(left>=0&&right<=s.length-1&&s.charAt(left)===s.charAt(right)){
                center = s.substring(left,right+1)
                left--
                right++
            }
            max = center.length>max.length?center : max
        }
        return max
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    下面我们再来回顾一下字符串的方法:

    获取目标索引的字符
    var str = "abcde";
    console.log(str.charAt(0));//a
    
    • 1
    • 2
    截取字符串
    1. slice( left , right ) : left开始截取的位置,right完成截取的位置,顾头不顾尾
    2. substring ( left , right ) : left开始截取的位置,right完成截取的位置,顾头不顾尾
    3. substr(left , len):left开始截取的位置,len要截取长度,顾头不顾尾
    遍历字符串
    for(var i=0;i< a.length;i++){
            console.log(i);//0 1 2 3 4 5 6
    }
    
    for(var key in a){
            console.log(key);//0 1 2 3 4 5 6
    }
    
    for(var i=0;i< a.length;i++){
            console.log(a[i]);//a b c d e f g
    }
    
    for(var i=0;i< a.length;i++){
            console.log(a.charAt(i));//a b c d e f g
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    查找字符:

    indexOf: 从头开始查找,找到返回索引,找不到返回-1
    lastIndexOf:从尾开始查找,找到返回索引,找不到返回-1

    替换字符:replace()对原字符串没有影响
    var str = "abcdefa";
    console.log(str.replace("a", "嘻嘻"))
    //嘻嘻bcdefa,默认只处理找到的第一个字符
    
    • 1
    • 2
    • 3
    首尾去空:trim()
    var str = "  abcde fg h ";
    console.log(str.length);//13
    console.log(str.trim().length);//10
    
    • 1
    • 2
    • 3
    大小写转换:
    1. toLowerCase()转成小写
    2. toUpperCase() 转成大写
  • 相关阅读:
    面向面试知识-Redis
    “蔚来杯“2022牛客暑期多校训练营2,签到题GJK
    sql建库,建表基础操作
    【三维目标检测】Part-A2(一)
    计算机竞赛 深度学习 opencv python 实现中国交通标志识别
    【数据结构】——顺序表
    RabbitMQ安装
    RabbitMQ快速入门
    scratch还原轨迹 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析
    cmake交叉编译时链接到x86库的问题
  • 原文地址:https://blog.csdn.net/mushroomLNL/article/details/128121593