409. [LeetCode]Longest Palindrome
来源:互联网 发布:系统数据保护在哪里 编辑:程序博客网 时间:2024/04/30 11:33
原题地址
java答案:
public class Solution { public boolean isSingle(int number){ // isOdd if(number%2 == 0) return false; return true; } public int chooseChar(char c){ if(c>='A' && c<='Z') return 1; else if(c>='a' && c<='z') return 2; else return 0; } public int longestPalindrome(String s) { int count = 0; int size = s.length(); int[] chars = new int[52]; for(int i=0;i<size;i++){ char temp = s.charAt(i); if(chooseChar(temp)== 1){ chars[(int)(temp - 'A')]++; } else if(chooseChar(temp) == 2){ chars[26+(int)(temp - 'a')]++; } } Arrays.sort(chars); for(int i = 51;i>=0;i--){ if(isSingle(chars[i])){ count += chars[i]; chars[i] = 0; break; } } for(int i = 51;i>=0;i--){ if(isSingle(chars[i])){ count += chars[i]-1; } else { count += chars[i]; } } return count; }}
python答案,大神算法分析:
这里用了逆向思维,不是求可以构成回文的字符有哪些,而是求不能构成回文的字符有哪些,然后用总的字符减去不能构成回文的字符
odds 是 奇数个数的字符数
bool(odds):此处有则加一,无则不加
python中 True == 1
def longestPalindrome(self, s): odds = sum(v & 1 for v in collections.Counter(s).values()) return len(s) - odds + bool(odds)
重点来分析第一个代码:
首先知道collections是什么?
collections是Python内建的一个集合模块,提供了许多有用的集合类;
Counter是dict的一个子类,是一个简单的计数器,例如,统计字符出现的个数v&1 这里也奇妙的很:
&1是快速判断一个数是不是奇数的运算方法,如果是,则等于1,如果不是则等于0
以后的判断奇数偶数,不要再用 %2==0,而用 &1 == 1
任何数转换成二进制,只有奇数的第一位会是1,偶数加偶数还是偶数
0 0
- 【Leetcode】409. Longest Palindrome
- [LeetCode]409. Longest Palindrome
- LeetCode 409. Longest Palindrome
- [LeetCode]--409. Longest Palindrome
- leetcode 409. Longest Palindrome
- LeetCode 409. Longest Palindrome
- LeetCode 409. Longest Palindrome
- leetcode 409. Longest Palindrome
- leetcode 409. Longest Palindrome
- 409. [LeetCode]Longest Palindrome
- 【LeetCode】 409. Longest Palindrome
- Leetcode 409. Longest Palindrome
- LeetCode 409. Longest Palindrome
- LeetCode 409. Longest Palindrome
- Leetcode-409. Longest Palindrome
- [LeetCode]409. Longest Palindrome
- leetcode 409. Longest Palindrome
- 【Leetcode】409. Longest Palindrome
- Sql server 批量更新
- 概率图模型一之隐马尓可夫模型与马尔科夫随机场
- SQL server 创建链接服务器
- 在Ubuntu Linux 15.04安装Web云桌面eyeOS
- 同一个tomcat下两个项目实现session共享
- 409. [LeetCode]Longest Palindrome
- “PHP+前端单页应用(MSUI)“的一些思考。
- 关于js缓冲运动
- 【JZOJ4923】【NOIP2017提高组模拟12.17】巧克力狂欢
- 17-结构体1
- layui学习笔记
- 人工智能(AI)简介
- Mysql中根据子表的分组后的最大统计数获取主表中的信息
- Struts2软件包介绍