找出乙個字串中最長的連續回文
題目:找出乙個字串中最長的回文,比如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 usingnamespace 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 找出來乙個字串中最長不重複子串...