昨天晚上有个LeekCode的比赛,两个半小时解五题,轻松解决前两题后,卡在第三题,还剩半小时时放弃,开始解第五题,解完但未验证通过,第四题只看了下题目。
排名第一的大佬只用了36分钟全部写完。
差距很大,只能一点一点的向大佬靠近。

LeekCode---5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

解题思路:这题的解法有好几种,我说一下我自己解这道题的思路(中心扩展)。首先,回文分为三类:1:'baab';2:'bab';3:'a'。然后,很明显的可以发现,回文是从中心对称的(前两种好理解,第三种只出现在类似'abcd'这种字段中,每一个字符都可以看做一个回文,就取第一个字符作为他的回文)。我们遍历这个字段,将每一个字符作为回文的中心,分别去比较第一种和第二种情况:第一种回文的长度为偶数,因为遍历了,所以我们只去比较当前位置和他前面的字符是否相统,如果相同,再继续比较其前后字符是否相同;第二种回文的长度为奇数,计算其长度时需要先加上自身的长度,再依次比较其前后字符是否相同。当出现多个重复字符时会同时满足两种情况(如‘baaab’),所以每一个字符都同时需要执行奇偶数两种情况,然后取length大的。

var longestPalindrome = function(s) {
    if(s.length<2){
        return s;
    }
    let length=0;
    let string='';
    for(let i=1;i<s.length;i++){
        let oddLength=1,evenLength=0;
        let oddStr='',evenStr='';
        for(let j=1;j<=i;j++){
            if(s[i-j]===s[i+j-1]){
                evenLength+=2;
                evenStr=s.substr(i-j,evenLength);
            }else{
                j=i;
            }
        }
        for(let j=1;j<=i;j++){
            if(s[i-j]===s[i+j]){
                oddLength+=2;
                oddStr=s.substr(i-j,oddLength);
            }else{
                j=i;
            }
        }
        string=Math.max(length,evenLength,oddLength)===evenLength?evenStr:Math.max(length,evenLength,oddLength)===oddLength?oddStr:string
        length=Math.max(length,evenLength,oddLength)
    }
    return length===1?s[1]:string;//全为单字符时,取第一个字符
};

这道题官方提供了很多的解法,字符串取反的方式我也考虑过,因为这个最节省时间,但是怎么截取字符串进行比较我尝试了很多次,最后放弃了。至于暴力破解,就是遍历出所有可能存在的字符串,然后在判断是否是回文,这个我觉得很蠢,而且我觉得从中心扩展其实从某种意义上来说就已经算是一种暴力破解了,没有必要先把字符串全部列举出来再去比较。动态规划算法我还不是太熟悉,暂时还看不太懂,等以后能看懂了再回过头来补充吧。还有一个Manacher算法,据说很牛逼,我要先去研究一下,也之后再回来补。

LeekCode解题记录的更多相关文章

  1. pwnable.kr input解题记录

    pwnable input解题记录 给了源码如下: #include "stdio.h" #include "unistd.h" #include " ...

  2. angr脚本——以angrctf解题记录为参考

    angr脚本--以angrctf解题记录为参考 ​ angr是用于逆向工程中进行二进制分析的一个python框架 ​ 符号执行 (Symbolic Execution)是一种程序分析技术.其可以通过分 ...

  3. LeetCode解题记录(贪心算法)(二)

    1. 前言 由于后面还有很多题型要写,贪心算法目前可能就到此为止了,上一篇博客的地址为 LeetCode解题记录(贪心算法)(一) 下面正式开始我们的刷题之旅 2. 贪心 763. 划分字母区间(中等 ...

  4. ssrf解题记录

    ssrf解题记录 最近工作需要做一些Web的代码审计,而我Web方面还比较薄弱,决定通过一些ctf的题目打打审计基础,练练思维,在博客上准备开几个专题专门记录刷题的过程. pwn题最近做的也很少,也要 ...

  5. 实验吧web解题记录

    自以为sql注入掌握的还是比较系统的,然而,做了这些题之后才发现,大千世界无奇不有,真是各种猥琐的思路...还是要多学习学习姿势跟上节奏 登录一下好吗?? http://ctf5.shiyanbar. ...

  6. LeetCode解题记录(贪心算法)(一)

    1. 前言 目前得到一本不错的算法书籍,页数不多,挺符合我的需要,于是正好借这个机会来好好的系统的刷一下算法题,一来呢,是可以给部分同学提供解题思路,和一些自己的思考,二来呢,我也可以在需要复习的时候 ...

  7. Leetcode解题记录

    尽量抽空刷LeetCode,持续更新 刷题记录在github上面,https://github.com/Zering/LeetCode 2016-09-05 300. Longest Increasi ...

  8. AC自动机解题记录

    1.HDU 2222 Keywords Search 模板题 #include <bits/stdc++.h> #define fir first #define sec second # ...

  9. [LeetCode]Valid Sudoku解题记录

    这道题考查对二维数组的处理,哈希表. 1.最自然的方法就是分别看每一个数是否符合三个规则.所以就须要对应的数据结构来 记录这些信息,判定是否存在.显然最先想到用哈希表. 2.学会把问题抽象成一个个的子 ...

随机推荐

  1. 2018-11-21-WPF-解决-ViewBox--不显示线的问题

    title author date CreateTime categories WPF 解决 ViewBox 不显示线的问题 lindexi 2018-11-21 09:37:53 +0800 201 ...

  2. Python学习之路9☞面向对象的程序设计

    一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什么是面向对象的程序设计及为什么要有它 面向过 ...

  3. HDU_1005:Number Sequence

    Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...

  4. @codeforces - 444A@ DZY Loves Physics

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 n 点 m 边的图,边有边权,点有点权. 找到一个连通 ...

  5. vue中$bus的传参的坑

    今天在做项目的时候碰见一个坑就是B页面有个点击事件需要触发完然后跳转到A页面,接着页面跳转过去后再A页面的create生命周期中利用on监听事件的改变,接着赋值给data里面某个数据,但是奇怪的问题是 ...

  6. 【NS2】学习资源

    查找资料时在网上看到不错的资源汇总博客 1 http://blog.csdn.net/chenkai619/article/category/1084323 2 http://blog.sina.co ...

  7. C# 从零开始写 SharpDx 应用 初始化dx修改颜色

    原文:C# 从零开始写 SharpDx 应用 初始化dx修改颜色 版权声明:博客已迁移到 https://blog.lindexi.com 欢迎访问.如果当前博客图片看不到,请到 https://bl ...

  8. DRDS 数据恢复重磅发布,全方位保障您的数据安全

    背景介绍 数据库存储着企业的核心数据,在企业中占据非常重要的位置,一旦出现SQL注入,数据误删的情况,影响的不仅仅是业务,还会泄露用户的个人信息.因此,数据库的数据安全问题十分重要. 当数据库迁移到云 ...

  9. win10 子系统ubuntu中文乱码

    ### . 查看系统是否支持中文 locale -a ### . 如不支持需安装中文包 apt-get install language-pack-zh-hans -y ### . 添加中文支持 lo ...

  10. MapReduce数据流-Mapper