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;
} 
相关推荐
仪器科学与传感技术博士1 小时前
python:讲懂决策树,为理解随机森林算法做准备,以示例带学习,通俗易懂,容易理解和掌握
python·算法·决策树
zm1 小时前
bool 类型转换运算符重载
c++
小指纹1 小时前
cf--思维训练
c++·算法·macos·ios·objective-c·cocoa
小指纹1 小时前
河南萌新联赛2025第(四)场【补题】
数据结构·c++·算法·macos·objective-c·cocoa·图论
菜鸟555551 小时前
河南萌新联赛2025第四场-河南大学
c++·算法·思维·河南萌新联赛
源远流长jerry1 小时前
C++、STL面试题总结(二)
jvm·c++
小坏坏的大世界1 小时前
C++中多线程和互斥锁的基本使用
开发语言·c++
Y4090012 小时前
List、ArrayList 与顺序表
数据结构·笔记·list
F_D_Z2 小时前
【感知机】感知机(perceptron)模型与几何解释
学习·算法·支持向量机
Hard but lovely2 小时前
C++ STL--> vector的模拟实现!
开发语言·c++