時間限制
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...