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 来应对奇数,偶数两种情况,非常巧妙。

  • 相关阅读:
    精益产品探索
    vue 之 pdf预览
    arcgis js 之 渔网工具(调用地图服务)
    arcgis js之卷帘工具
    arcgis js之调用wms服务
    vue-cli3 本地数据模拟后台接口
    cmd设置电脑自动关机
    Arcgis js之web墨卡托(3857)转经纬度坐标(4326)
    arcgis js之地图分屏同步
    arcgis之gp服务发布
  • 原文地址:https://www.cnblogs.com/shiji-note/p/14502679.html
Copyright © 2011-2022 走看看