pat 最長對稱子串

2021-07-28 23:48:37 字數 1277 閱讀 5323

時間限制

100 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者 陳越

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定"is pat&tap symmetric?",最長對稱子串為"s pat&tap s",於是你應該輸出11。

輸入格式:

輸入在一行中給出長度不超過1000的非空字串。

輸出格式:

在一行中輸出最長對稱子串的長度。

輸入樣例:

is pat&tap symmetric?
輸出樣例:
11

思路:恩,我好像傻傻分不清子串行和子串的區別,然後懟死在這題上,每次在訓練的時候碰到自己的思維誤區的時候,就感覺自己做了有營養的題目。

子串的話就好做多了,最簡單的就是暴力o(n^2)去暴力區間,然後再花o(n)的時間去check是否是回文串。

還有一種做法是o(n^2)的, 我們去列舉字串裡每個字元,把這個字元當做回文串的中心去往外擴充套件,如果兩端的字元相等就擴充套件,如果不等,那麼再擴充套件下去也就肯定不是回文串了,所以停止擴充套件,每次都更新下最大長度。要注意下對奇數、偶數的回文串進行判定。

o(n^3)的**:

**:#include using namespace std;

const int maxn=1e3+5;

char str[maxn];

bool check(char *a, char *b)

int getlongeststring(char *a)

; last++;

}first++;

}return res;

}int main()

res=(last-first-1)>res?(last-first-1):res;

first=pchar-1;

last=pchar+1;

while(first>=a && last<=(a+len-1) && *first==*last)

res=(last-first+-1)>res?(last-first-1):res;

pchar++;

}return res;

}int main()

{ gets(str);

int i, j;

cout<

PAT最長對稱子串

題目鏈結 時間限制 100 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定 is pat tap symmetric?最長對稱子串為 s pat tap s 於是你應該輸出11。輸入格式 ...

最長對稱子串

對於任何乙個位置i,當對稱的陣列是乙個奇數時,對稱的個數初始就為1,然後以i為原點向外比較i j和i j,如果i j和i j相等,則對稱的個數 2,如果不相等就立刻跳出迴圈。當對稱的陣列是乙個偶數時,對於陣列中任意乙個位置i的字母而言只需從i開始,往兩邊走,判斷i j 1和i j是否是相等的,如果相...

最長對稱子串

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定is pat tap symmetric?最長對稱子串為s pat tap s,於是你應該輸出11。輸入格式 輸入在一行中給出長度不超過1000的非空字串。輸出格式 在一行中輸出最長對稱子串的長度。輸入樣例 is pat tap symmet...