• 最长回文子串


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

    注意: 要同时考虑字符串为奇数,和字符串为偶数的情况,但不论是奇数还是偶数,都进行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() 转成大写
  • 相关阅读:
    第三次科技革命(一)
    「ChatGPT」掀起新一轮AI热潮!超越GPT-4 Turbo,商汤日日新大升级!
    【老生谈算法】matlab实现fsk-ask算法源码——fsk-ask算法
    黑马JVM总结(二十八)
    SkiaSharp 之 WPF 自绘 投篮小游戏(案例版)
    LeetCode 310 周赛
    速卖通、阿里国际如何提升店铺流量?如何安全测评?
    面试题~~
    [模型]拉格朗日插值法
    ClickHouse 数据插入、更新与删除操作 SQL
  • 原文地址:https://blog.csdn.net/mushroomLNL/article/details/128121593