蒟蒻求助,最后一个点T了
查看原帖
蒟蒻求助,最后一个点T了
1058901
Logic_Li楼主2023/9/15 13:05
#include<iostream>
#include<cstring>

using namespace std;
char yuan[20010],xin[20010],now[90];  //yuan:读入字符串;xin:处理后只含小写字母的字符串 
int place[20010],wei,maxlen,sta,lenxin;

bool huiwen(int start,int end){  //判断是否为回文,start为回文头,end为回文尾 
	int lennow;
	lennow=end-start+1;
	
	for(int i=start;i<start+lennow/2+1;i++){
		if(xin[i]!=xin[end-i+start]){
			return false;
		}
	}
	return true;
}

int main(){
	int len;
	
	while(cin.getline(now,85)){  //读入 
		strcat(yuan,now);
		strcat(yuan,"\n");
	}
	len=strlen(yuan);
	
	for (int i=0;i<len;i++){			//删除字符,大写字母转小写,存入xin 
		if(yuan[i]>='a'&&yuan[i]<='z'){
			xin[wei]=yuan[i];
			place[wei]=i;
			wei++;	
		}
		if(yuan[i]>='A'&&yuan[i]<='Z'){
			xin[wei]=yuan[i]+32;
			place[wei]=i;
			wei++;	
		}
	}
	
	lenxin=strlen(xin);
	
	for (int i=0;i<lenxin;i++){
		for (int j=0;j<min(2002,lenxin-i);j++){
			if((huiwen(i,i+j))&&(j>maxlen)){
				maxlen=j;
				sta=i;
			}
		}
	}
	cout<<maxlen+1<<endl;
	
	for(int i=place[sta];i<=place[sta+maxlen];i++){
    	cout<<yuan[i];
	}
	
	return 0;
}

还有优化空间吗

2023/9/15 13:05
加载中...