zoukankan      html  css  js  c++  java
  • 最长回文子串

    回文串就是正着读和反着读都一样的字符串。
    比如说字符串abaabba都是回文串,因为它们对称,反过来还是和本身一样。反之,字符串abac就不是回文串。
    可以看到回文串的的长度可能是奇数,也可能是偶数,这就添加了回文串问题的难度,解决该类问题的核心是双指针

    寻找回文串的问题核心思想是:从中间开始向两边扩散来判断回文串

    for 0 <= i < len(s):
        找到以 s[i] 为中心的回文串
        更新答案
    

    但是呢,回文串的长度可能是奇数也可能是偶数,如果是abba这种情况,没有一个中心字符,上面的算法就没辙了。所以我们可以修改一下:

    for 0 <= i < len(s):
        找到以 s[i] 为中心的回文串
        找到以 s[i] 和 s[i+1] 为中心的回文串
        更新答案
    

    代码:

    class Solution {
        public String longestPalindrome(String s) {
            String res=new String();
            for(int i=0;i<s.length();i++){
                String s1=palindrome(s,i,i);
                String s2=palindrome(s,i,i+1);
    
                res=res.length()>s1.length() ? res:s1;
                res=res.length()>s2.length() ? res:s2;
    
            }
            return res;
        }
    
        String palindrome(String s,int l,int r){
            while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){
                l--;
                r++;
            }
            return s.substring(l+1,r);
        }
    }
    

    palindrome这个函数是用来返回从l,r开始向两边扩散的情况下可得到的回文串
    而从主函数中可以通过输入i,i 还是 i,i+1 来应对奇数,偶数两种情况,非常巧妙。

  • 相关阅读:
    weblogic weak_password 复现
    redis 4-unacc 复现
    Django debug page XSS漏洞(CVE-2017-12794)复现
    (CVE-2016-4437)Apache Shiro <=1.2.4 反序列化漏洞复现
    Apache SSI 远程命令执行漏洞复现
    Apache HTTPD 未知后缀解析漏洞复现
    s2-005复现
    05 跨站请求伪造漏洞CSRF
    安全大面
    JAVA基础学习day03--流程控制语句
  • 原文地址:https://www.cnblogs.com/shiji-note/p/14502679.html
Copyright © 2011-2022 走看看