P12592题解

题目传送门

思路

由于题目中说了可以任意交换两个字符的位置,我们只需要判断这个字符串是否满足回文串的条件即可。

代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int a[30];
int main(){
	int T;
	cin>>T;
	while(T--){
		fill(a,a+29,0);//多测要清空
		string s;
		cin>>s;
		for(int i=0;i<s.size();i++){
			a[int(s[i]-96)]++;//统计a~z每个字符的个数
		}
		if(s.size()%2==1){//若字符串长度为奇数
			int flag=0;//代表字符串中每个字符的数量为奇数的个数
			for(int i=1;i<=26;i++){
				if(a[i]%2) flag++;//若为奇数,flag++
			}
			if(flag!=1) cout<<"No"<<endl;//由于长度为奇数的回文串中间会有一个单独的字符串,所以判断flag是否等于1
			else cout<<"Yes"<<endl;
		}else{
			int flag=0;//同样意思
			for(int i=1;i<=26;i++){
				if(a[i]%2) flag++;
			}
			if(flag!=0) cout<<"No"<<endl;//由于长度为偶数的回文串每个字符都两两相对,所以判断flag是否等于0
			else cout<<"Yes"<<endl;
		}
	}
	
	return 0;
} 
相关推荐
jinyishu_9 分钟前
C++ string使用方法
开发语言·c++
imuliuliang10 分钟前
关于图搜索算法的性能建模与可预测性研究7
算法
乐观勇敢坚强的老彭32 分钟前
C++浮点数使用注意事项
开发语言·c++
库克克44 分钟前
【C++ 】内联函数
java·开发语言·c++
盐焗鹌鹑蛋1 小时前
【C++】红黑树
c++
ForDreamMusk1 小时前
批量归一化
人工智能·算法·机器学习
Ivanqhz2 小时前
刚体的自由度
人工智能·算法
KaMeidebaby2 小时前
卡梅德生物技术快报|抗体合成:多肽抗体合成工程化方案:Nsp2 保守肽多抗制备与多维度验证
前端·网络·数据库·人工智能·算法
Yang_jie_033 小时前
笔记:数据结构(栈是否使用底指针以及头指针的初始化值)
数据结构·笔记·算法
aaPIXa6223 小时前
C++采样引导优化SPGO——比PGO更智能的编译器决策新方案
java·c++·人工智能