后端开发刷题 | 最长回文子串

描述

对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。

数据范围: 1≤n≤1000

要求:空间复杂度 O(1),时间复杂度 O(n2)

进阶:  空间复杂度 O(n),时间复杂度 O(n)

示例1

输入:

"ababc"

返回值:

3

说明:

最长的回文子串为"aba"与"bab",长度都为3

示例2

输入:

"abbba"

返回值:

5

示例3

输入:

"b"

返回值:

1

思路分析:

该题可以使用中心扩展法来求解,往中心元素的两边进行比较,如图:

后端开发刷题 | 最长回文子串_第1张图片

具体做法:

  • step 1:遍历字符串每个字符。
  • step 2:以每次遍历到的字符为中心(分奇数长度和偶数长度两种情况),不断向两边扩展。
  • step 3:如果两边都是相同的就是回文,不断扩大到最大长度即是以这个字符(或偶数两个)为中心的最长回文子串。
  • step 4:我们比较完每个字符为中心的最长回文子串,取最大值即可。

代码:

import java.util.*;


public class Solution {
    public int f(String s,int begin,int end){
        while(begin>=0&&end

你可能感兴趣的:(笔试题目,java,算法,javascript,数据结构,后端)