当前位置:网站首页>leetcode:266. 回文全排列
leetcode:266. 回文全排列
2022-08-05 00:10:00 【OceanStar的学习笔记】
题目来源
题目描述
给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。
题目解析
思路
回文序列:
- 如果字符串的长度是奇数长度时,只有一个字母出现的次数是奇数,其余均为偶数
- 如果字符串的长度是奇偶长度时,每个字母出现的次数一定是偶数次
实现
同一个map来统计
class Solution {
public:
bool canPermutePalindrome(string s) {
unordered_map<char, int> m;
int cnt = 0;
for (auto a : s) ++m[a];
for (auto a : m) {
if (a.second % 2 == 1) ++cnt;
}
return cnt == 0 || (s.size() % 2 == 1 && cnt == 1);
}
};
用set也可以
class Solution {
public:
bool canPermutePalindrome(string s) {
unordered_set<char> st;
for (auto a : s) {
if (!st.count(a)) st.insert(a);
else st.erase(a);
}
return st.empty() || st.size() == 1;
}
};
bitset
- 建立一个 256 大小的 bitset,每个字母根据其 ASCII 码值的不同都有其对应的位置
- 然后我们遍历整个字符串,遇到一个字符,就将其对应的位置的二进制数 flip 一下,就是0变1,1变0
- 那么遍历完成后,所有出现次数为偶数的对应位置还应该为0,而出现次数为奇数的时候,对应位置就为1了
- 也就是说我们最后只要统计1的个数,就知道出现次数为奇数的字母的个数了,只要个数小于2就是回文数
class Solution {
public:
bool canPermutePalindrome(string s) {
bitset<256> b;
for (auto a : s) {
b.flip(a);
}
return b.count() < 2;
}
};
边栏推荐
- VMware NSX 4.0 -- 网络安全虚拟化平台
- 10 个关于 Promise 和 setTimeout 知识的面试题,通过图解一次说透彻
- 测试经理要不要做测试执行?
- Flask框架 根据源码分析可扩展点
- Uniapp dynamic sliding navigation effect demo (finishing)
- 小黑leetcode之旅:95. 至少有 K 个重复字符的最长子串
- Security software Avast and Symantec NortonLifeLock merge with UK approval, market value soars 43%
- 大师教你3D实时角色制作流程,游戏建模流程分享
- 【无标题】
- 资深游戏建模师告知新手,游戏场景建模师必备软件有哪些?
猜你喜欢
3. Actual combat---crawl the result page corresponding to Baidu's specified entry (a simple page collector)
数据类型及输入输出初探(C语言)
[Happy Qixi Festival] How does Nacos realize the service registration function?
矩阵数学原理
看图识字,DELL SC4020 / SCv2000 控制器更换过程
Metasploit-域名上线隐藏IP
【七夕情人节特效】-- canvas实现满屏爱心
Ab3d.PowerToys and Ab3d.DXEngine Crack
The master teaches you the 3D real-time character production process, the game modeling process sharing
刘润直播预告 | 顶级高手,如何创造财富
随机推荐
MAUI Blazor 权限经验分享 (定位,使用相机)
怎么将自己新文章自动推送给自己的粉丝(巨简单,学不会来打我)
STC89C52RC的P4口的应用问题
游戏3D建模入门,有哪些建模软件可以选择?
Huggingface入门篇 II (QA)
4 - "PyTorch Deep Learning Practice" - Backpropagation
Cloud native - Kubernetes 】 【 scheduling constraints
矩阵数学原理
招标公告 | 海纳百创公众号运维项目
MongoDB权限验证开启与mongoose数据库配置
Basic web in PLSQL
[Happy Qixi Festival] How does Nacos realize the service registration function?
uniapp horizontal tab (horizontal scrolling navigation bar) effect demo (organization)
《MySQL入门很轻松》第2章:MySQL管理工具介绍
Mathematical Principles of Matrix
元宇宙:未来我们的每一个日常行为是否都能成为赚钱工具?
Metasploit-域名上线隐藏IP
10 种常见的BUG分类
上课笔记(6)(2)——#742. 周末舞会
图解 Canvas 入门