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;
} 
相关推荐
霍霍的袁6 分钟前
【C++】string类 从 入门使用 到 底层深浅拷贝模拟实现
开发语言·c++·visual studio
MIngYaaa5207 分钟前
2026暑期牛客多校3 2026-7-24
数据结构·算法·000
2501_9378609418 分钟前
Java 集合底层深度剖析:Map 与 Set、二叉搜索树、哈希表全解
java·数据结构·散列表
geats人山人海43 分钟前
算法基础第二讲 基础算法下
算法
Hommy881 小时前
【剪映小助手】字符串列表转对象接口(Str List To Obds)
数据结构·list·剪映小助手·视频剪辑自动化·剪映api·开源剪映小助手
阳明山水1 小时前
销量预测2026下半年:新架构、新基准与新共识
人工智能·深度学习·算法·机器学习·架构
知识分享小能手1 小时前
高等数学学习教程,从入门到精通,定积分 — 知识点全面总结(9)
学习·算法·机器学习
noipp1 小时前
推荐题目:洛谷 P3726 [AHOI2017/HNOI2017] 抛硬币
c语言·数据结构·c++·算法·编程·洛谷·luogu
c238561 小时前
C/C++每日一练14
c语言·c++·算法
程序员-珍2 小时前
力扣 877. 石子游戏
算法·leetcode·游戏