• Leetcode5 最长回文子串


    欢迎一起讨论

    Geooo的个人博客:https://geooo.gitee.io/geoooblog/

    题目描述

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

    实例1

    输入: "babad"
    输出: "bab"
    注意: "aba" 也是一个有效答案。
    

    实例2

    输入: "cbbd"
    输出: "bb"
    

    解题思路

    利用指针思想 (建议先看代码再看解释)

    1. 左右端两边开始定义 i,j将String切成一段子串 ==> s.substring( i , j )
    2. StringBuffer 的 reverse() 方法将切割的子串反转 再toString() 和 equals() 进行比较
    3. 若相等则比较res的字符串,比其长则替换,短则舍弃
    4. continue ==> 若继续比下去得到的子串肯定比该子串短,则直接continue跳到下一次循环查看回文自串
    5. 若不相等则继续循环往下搜索
    6. 循环完return res字符串
        public String longestPalindrome(String s) {
            int start = 0;
            int end = s.length()-1;
            String res = new String("");
            // i指针从 0 开始 (每次 j-- 等于 i 时 i++) 
            for(int i = start; i< s.length();i++){
                //j指针从 String.length()-1 开始
                for(int j = end; j>= i; j--){
                    //若 i == j 则将字符转为String substring在i == j时返回""
                    String temp = (i == j) ?  String.valueOf( s.charAt(i) ) : s.substring(i,j);
                    //字符串反转
                    String rev = new StringBuffer(temp).reverse().toString();
                    //如果相等
                    if(temp.equals(rev)){
                        res = (temp.length() >= res.length()) ? temp : resSb;
                        //跳出循环
                        continue;
                    }
    
                }
            }
            return res;
    
        }
    
    
  • 相关阅读:
    localStorage、sessionStorage详解,以及storage事件使用
    企业和开发人员究竟该如何适应web标准?
    平面设计常用制作尺寸
    git命令
    TCP/IP、Http、Socket的区别
    canvas
    《千克》
    《小数的加法》
    fiddler设置代理
    《分数的基本性质》
  • 原文地址:https://www.cnblogs.com/Geooo/p/11279467.html
Copyright © 2020-2023  润新知