zoukankan      html  css  js  c++  java
  • LeetCode第五题:Longest Palindromic Substring

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

    Example 1:

    Input: "babad"
    Output: "bab"
    Note: "aba" is also a valid answer.
    

    Example 2:

    Input: "cbbd"
    Output: "bb"

    题意就是给一个字符串,找到子串中最大的对称字符串。
    我的想法就是分为两种情况,奇数情况和偶数,从其中一个字符或者两个字符往前后两个方向进行扫描。
    public String longestPalindrome(String s) {
            String longestPalindrome = "";
            for (int i = 0; i < s.length(); i++) {
                //奇数情况
                int pre = i;
                int next = i;
                String s1 = getLongestPalindromeByIndex(pre, next, s);
                //偶数情况
                next++;
                String s2 = getLongestPalindromeByIndex(pre, next, s);
                s1 = s1.length() > s2.length() ? s1 : s2;
                longestPalindrome = longestPalindrome.length() >= s1.length() ? longestPalindrome : s1;
            }
            return longestPalindrome;
        }
    
        public static String getLongestPalindromeByIndex(int pre, int next, String s) {
            while (pre >= 0 && next < s.length() && s.charAt(pre) == s.charAt(next)) {
                pre--;
                next++;
            }
            //当退出循环时,说明当前pre和next不相等,从pre+1截取到next-1
            return s.substring(pre + 1, next);
        }
    

      这个代码有一个问题,就是产生了很多无用的字符串,其实可以将返回值变成start和end也就是开始索引和结束索引,

    但是我感觉这样写可读性好一点。

  • 相关阅读:
    mysql 字符串先按照长度排序再按照ASCII码排序
    JMeter 压力测试文档
    Linux C监听鼠标键盘操作
    ubuntu 笔记本触摸板失灵
    git commit之后,想撤销commit
    清空iptables防火墙
    在k8s中搭建sonarqube并集成到jenkins
    redis集群搭建
    四叶草防火墙内外网映射
    k8smaster节点更换ip
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/9314766.html
Copyright © 2011-2022 走看看