首页 > 其他 > 详细

266. Palindrome Permutation

时间:2017-02-11 10:47:04      阅读:240      评论:0      收藏:0      [点我收藏+]

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

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

这道题收到了Palindrome Permutation2的启发,用了odd检验odd-even>1否。代码如下:

 1 public class Solution {
 2     public boolean canPermutePalindrome(String s) {
 3         Map<Character,Integer> map = new HashMap<>();
 4         int odd = 0;
 5         for(char c:s.toCharArray()){
 6             map.put(c,map.getOrDefault(c,0)+1);
 7             odd+=map.get(c)%2==1?1:-1;
 8         }
 9         return odd>1?false:true;
10     }
11 }

当然,本题也可以不用计数器来做,用hashSet来做,其实说白了,就是看出现奇数的char是否>1,代码如下:

 1 public class Solution {
 2     public boolean canPermutePalindrome(String s) {
 3         Set<Character> set = new HashSet<>();
 4         for(char c:s.toCharArray()){
 5             if(set.contains(c)){
 6                 set.remove(c);
 7             }else{
 8                 set.add(c);
 9             }
10         }
11         return set.size()>1?false:true;
12     }
13 }

 

266. Palindrome Permutation

原文:http://www.cnblogs.com/codeskiller/p/6388568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!