求一个字符串中的最长回文串(Java)

Posted shlsm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个字符串中的最长回文串(Java)相关的知识,希望对你有一定的参考价值。

package huiwenchuan;

import java.util.Scanner;

public class Main {
  //判断一个字符串是否为回文串
  public static boolean isHuiWen(String s)
  {
    int len=s.length();
    for(int i=0;i<len/2;i++)
    {
      if(!(s.charAt(i)==s.charAt(len-i-1)))
      {
        return false;
      }
    }
    return true;
  }
  /**
  * 求一个字符串中的最长回文串
  */
  static String maxPalindromeString(String str)
  {
    String maxStr = null;//保存最长回文串
    int len = 0;//保存回文串长度
    int maxLen=0;//保存最长回文串的长度
    for(int i=0;i<str.length();i++)
    {
      for(int j=i+1;j<=str.length();j++)
      {
        String s=str.substring(i, j);
        if(Main.isHuiWen(s))
        {
          len=s.length();
        }
        if(len>maxLen)
        {
          maxLen=len;
          maxStr=s;
        }
        len=0;
      }
    }
    return maxStr;

  }
  public static void main(String[] args) {
    String str;
    Scanner sca=new Scanner(System.in);
    str=sca.next();
    String maxPalStr=maxPalindromeString(str);
    System.out.println(maxPalStr);
  }
}

以上是关于求一个字符串中的最长回文串(Java)的主要内容,如果未能解决你的问题,请参考以下文章

求最长回文子串,O(n)复杂度

数据结构与算法 Manacher 算法求最长回文子串

UVa 11404 回文子序列(LCS求最长回文串长度)

409.求最长回文串的长度 LongestPalindrome

求最长回文串

Manacher算法 最长回文串