-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path字符串最长回文串的长度和个数.cpp
41 lines (41 loc) · 1.12 KB
/
字符串最长回文串的长度和个数.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
Name: 北京理工大学复试上机历年题目
Date: 2019-02-28
Author: Sologala
GitHub: https://github.com/Sologala
Question:
输入一个字符串,输出该字符串最长回文串的长度和个数(回文串:如果一个字符串中心对称就是回文串)
注意:大小写不敏感
AbcBa 5 1
AbaB 3 2
*/
#include <iostream>
#include <string>
#include <stack>
#include <algorithm>
using namespace std;
bool judge(string &s,int l ,int h){
while(l<=h){//判断回文串
if(s[l++]!=s[h--])return false;
}
return true;
}
int main(){
string str;
cin>>str;
transform(str.begin(),str.end(),str.begin(),::tolower);//变成小写
int max_len =0,count=0;
for(int i=0;i<str.length();++i){
for(int j =str.length()-1;j>=i&&j-i>=max_len;j--){
if(judge(str,i,j)){
if(j-i==max_len) count++;
else {
max_len =j-i;
count=1;
}
}
}
}
cout<<"长:"<<max_len+1<<" 总共"<<count<<endl;
return 0;
}