博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Palindrome Permutation
阅读量:6188 次
发布时间:2019-06-21

本文共 1119 字,大约阅读时间需要 3 分钟。

Problem Description:

Given a string, determine if a permutation of the string could form a palindrome.

For example,

"code" -> False, "aab" -> True, "carerac" -> True.

Hint:

      1. Consider the palindromes of odd vs even length. What difference do you notice?
      2. Count the frequency of each character.
      3. If each character occurs even number of times, then it must be a palindrome. How about character which occurs odd number of times?

Just check there are no more than 2 characters that appear an odd number of times in the string.

My C++ code using an array as a hash map is as follows.

1 class Solution {2 public:3     bool canPermutePalindrome(string s) {4         int odd = 0, counts[256] = {
0};5 for (char c : s)6 odd += ++counts[c] & 1 ? 1 : -1;7 return odd <= 1;8 }9 };

BTW, Stefan has posted many nice solutions , including the following one that uses bitset.

1 class Solution {2 public:3     bool canPermutePalindrome(string s) {4         bitset<256> b;5         for (char c : s) b.flip(c);6         return b.count() < 2;7     }8 };

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4748554.html

你可能感兴趣的文章
PhoenixFramework自动化测试平台部署初始化说明
查看>>
使用OWA无法撰写邮件内容的解决法
查看>>
反射的基础(二):构造器类的使用
查看>>
我的友情链接
查看>>
MySQL 主键、索引创建
查看>>
electron webview 页面加载事件顺序
查看>>
智引IT综合管理解决方案
查看>>
每日学习笔记(20)
查看>>
Java使用Executor执行Callable任务时的几种方法
查看>>
我的友情链接
查看>>
Openfire搭建聊天系统
查看>>
ora-01189故障解决办法
查看>>
开始写博客
查看>>
Oracle认证/维保技术支持服务找重庆思庄
查看>>
Cookie对象常用属性
查看>>
php[6491]: segfault at * rip * rsp * error 6
查看>>
安装Exchange2007邮件系统
查看>>
通过Keepalived实现Redis Failover自动故障切换功能[实践分享]
查看>>
linux 命令 —— cp
查看>>
ASP.NET MVC 3和Razor中的@helper 语法
查看>>