• JavaScript对称子字符串最大长度


     之前看的很多算法是实现然后也没管他,现在决定记录我的算法之路

    之前看到一篇公众号说了下对称字符串的问题,当然我之前在牛客网页做过这个题,不过我记得当时使用C语言指针来做的,现在我用JavaScript来实现,其实原理和思想都是一样的。

    首先定义问题,最长对称字符串,eg:google   =>  goog => 4;就是这么个理。算法这个玩意儿还是先说思想,waiting show the code。

    首先,对称的字符串,例如:goog  gobog,都是对称的,但是分为奇数和偶数,首先看奇数:

    以gobog为例,当指向b时,我们只需要判断b的前后是否是一样的,也就是i+1 和 i-1是否相等,是相等,则+2,依次判断

    偶数时:以goog为例,当指向第一个o时,首先判断 i 和 i+1是否相等,是则继续判断 i-1 和 i+1 的后一个是否相等

    代码如下

    function max_length(str) {
        var n = 1;
        var j = 0;
        var max = 1; //最大长度
        var len = str.length; //字符串长度
        if (!str || str.length <= 1) //判断字符串是否为空 或长度为1 
            return false;
        for (let i = 1; i <= str.length - 1; i++) {
            n = 1;
            j = 1;
            while ((j <= i) && (i + j <= len) && (str[i - j] == str[i + j])) { //奇数的情况
                n += 2;
                j++
                if (n > max)
                    max = n;
            }
            j = 1;
            n = 1;
            while ((j <= i) && (i + j + 1 <= len)) { //偶数的情况
                if ((str[i] == str[i + 1]) && (str[i - j] == str[i + j + 1])) {
                    n += 2;
                    if (n + 1 > max)
                        max = n + 1;
                }
                j++;
            }
        }
        return max
    }

    简单粗暴的方法,可以在node的REPL环境下运行

  • 相关阅读:
    closure
    运算符优先级
    css妙用
    BFC (块级格式化上下文)
    display:table-cell 详解
    line-height深入理解
    margin collapse
    探究 CSS 解析原理
    python入门
    spring与线程安全
  • 原文地址:https://www.cnblogs.com/duyingxuan/p/6481300.html
Copyright © 2020-2023  润新知