找出乙個字串中最長的連續回文

2021-06-26 11:26:47 字數 909 閱讀 4145

找出乙個字串中最長的連續回文

題目:找出乙個字串中最長的回文,比如goooogleel,最長回文是goooog

分析:第一,定義乙個pstr指向字串str,再定義乙個p指向pstr,q指向pstr+1;

第二,找出乙個字元*p與其下乙個字元*q相同位置,比如oo,num++,index = p;然後比較這兩個相同字元*p,*q兩邊的字元是否相等,如果相等再向兩邊擴充套件p--,q++(p>str&&q!='\0')。如果p指向首部,即p=str,則調出while迴圈,再比較一次if(*p == *q),num++,index = q.

第三,如果發現連續兩個字元不相等,則讓pstr++,p=pstr,q =pstr+1.

第四,通過maxnum和maxindex記錄下最長回文的數目和位置。

#include using

namespace std;

void getlongestsymmetricallength(char* str)

while((*p == *q)&&(p > str)&&(*q != '

\0'))

if((p == str)&&(*p == *q)&&(*q != '

\0'))

if(num > maxnum)

pstr++;

p = pstr;

q = pstr+1;

}cout << "

result:

" ; for(int i=0;i<2*maxnum;++i)

cout << *maxindex++ << "

"; cout << endl;

cout << "

maxnum:

"<< maxnum << endl;

}int main()

在乙個字串中找出最長回文子串

如何高效的在乙個字串中找到最長的回文子串呢?下面我們根據 來分析 首先,回文串有兩種,一種是字串的長度是偶數,另一種就是奇數。我們從字串第二個字元開始,我們把當前起始字元叫做i。先檢驗奇數長度的字串,對比該字元的前乙個和後乙個 i 1 和 i 1 一共三個字元 奇數個 如果前後字元相同則說明是回文串...

給定乙個字串,找出該字串的最長回文子串

給定乙個字串,找出該字串的最長回文子串。回文字串指的就是從左右兩邊看都一樣的字串,如aba,cddc都是回文字串。字串abbacdc存在的回文子串有abba和cdc,因此它的最長回文子串為abba。public class longpalindromic private static string ...

python實現找出來乙個字串中最長不重複子串

剛結束的乙個筆試題,很簡單,不多說簡單貼一下具體的實現 usr bin env python encoding utf 8 author 沂水寒城 功能 找出來乙個字串中最長不重複子串 def find longest no repeat substr one str 找出來乙個字串中最長不重複子串...