5. Longest Palindromic Substring

    xiaoxiao2021-03-25  77

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

    分析:需要以每一个字母开始去遍历寻找与随后的字母是否构成回文:

    1、构成回文,则判断长度是否比之前的会问长度更长:1)若比之前的回文长度更长,将该回文做为最长回文。

    ·               2)若比之前的回文短或者等长,最长回文位置不做改变;

    2、不构成回文,继续下一个字母与其后面的字母的比较。

    源代码:

    string longestPalindrome(string s){ int length = s.length();//字符串长度 int  maxright = 0,maxLeft = 0;//用来记录最长回文的长度,初始化为0 if (length < 2)//长度为1或为空时返回字符串本身 return s; else{ int left = 0; int right = length - 1; while (left < length -1){//从左到右依次遍历 while (left < right){//依次判断该字母与后面的字母是否构成回文 int j = left; int k = right; while (j < k && s.at(j)==s.at(k)){//判断后面的字母是否构成回文 j++; k--; } if (j + 1 == k || j == k){//判断是否为回文 if ((right - left) > (maxright - maxLeft)){//判断是否为最长回文 maxright = right; maxLeft = left; } } right--; } left++; } return s.substr(maxLeft, maxright - maxLeft);//返回最长回文 } }

    转载请注明原文地址: https://ju.6miu.com/read-16127.html

    最新回复(0)