题目:

  Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.

  This is case sensitive, for example "Aa" is not considered a palindrome here.

  Note:
  Assume the length of given string will not exceed 1,010.

  Example:

Input:
"abccccdd" Output: Explanation:
One longest palindrome that can be built is "dccaccd", whose length is 7.

大意:

  给出一个由小写或大写字母组成的字符串,找到能被其中的字母组成的最长的回文的长度。

  这是区分大小写的,比如“Aa”就不能认为是回文。

  注意: 
  假设给出的字符串长度不会超过1010。

  例子:

输入:
“abccccdd” 输出: 解释:
最长的回文为“dccaccd”,长度为7。

  回文就是中间有一个单个的字母,两边的字母是对称的。

  • aaadd的最长回文是daaad
  • aaadddcc的最长回文是cdaaadc或者cadddac

  可以总结为:

  • 数目为偶数的字母将全部出现在最长回文中,
  • 奇数就有两种情况,有没有大于1个的,如果有大于1个的。就比如有3个,那么回文长度将加上2。如果有7个就加上6.
  • 如果所有的奇数都不大于1,最后结果再加1即可
class Solution {
public int longestPalindrome(String s) {
int result = 0;
boolean flag = false;
int[] a = new int[26*2];
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) < 'a') {
a[s.charAt(i) - 'A' + 26]++;
} else {
a[s.charAt(i) - 'a'] ++;
}
}
for(int i:a){
if(i == 1){
flag = true;
}
if(i > 1){
result += i / 2 * 2;
if (i % 2 == 1) flag = true;
}
}
if(flag){
result++;
}
return result;
}
}

  这里使用一个26*2的数组记录字幕个数,因为是区分大小写的,每次如果字母数目大于1先除2再乘2,这样偶数不变,奇数将减一。还设置了一个flag变量判断是否存在奇数。

LeetCode——409. Longest Palindrome的更多相关文章

  1. 24. leetcode 409. Longest Palindrome

    409. Longest Palindrome Given a string which consists of lowercase or uppercase letters, find the le ...

  2. LeetCode 409. Longest Palindrome (最长回文)

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  3. [LeetCode] 409. Longest Palindrome 最长回文

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  4. LeetCode 409 Longest Palindrome

    Problem: Given a string which consists of lowercase or uppercase letters, find the length of the lon ...

  5. 【leetcode】409. Longest Palindrome

    problem 409. Longest Palindrome solution1: class Solution { public: int longestPalindrome(string s) ...

  6. 【LeetCode】409. Longest Palindrome 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:字典统计次数 方法二:HashSet 方法三 ...

  7. [LeetCode&Python] Problem 409. Longest Palindrome

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  8. 409. Longest Palindrome

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  9. 409. Longest Palindrome 最长对称串

    [抄题]: Given a string which consists of lowercase or uppercase letters, find the length of the longes ...

随机推荐

  1. mysql 终端命令

    1.打开数据库 /usr/local/MySQL/bin/mysql -u root -p 2.输入root密码 3.使用我的数据库 use mysql 4.查看表 desc table_name 5 ...

  2. jieba GitHUb 结巴分词

    1.GitHub jieba-analysis 结巴分词: https://github.com/fxsjy/jieba 2.jieba-analysis 结巴分词(java版): https://g ...

  3. Oracle数据库---游标

    --查询所有员工的员工号.姓名和职位的信息.DECLARE --定义游标 CURSOR emp_cursor IS SELECT empno,ename,job FROM emp; v_empno e ...

  4. mongon库加上权限认证后,java程序连接异常

    现象: linux库中mongo库,用超级管理员添加了一个超级管理员,并加了认证. 通过spring等相关的配置文件获取Mongo数据库连接,抛出异常,如下: Caused by: org.sprin ...

  5. 求1-2/3+3/5-4/7+......49/97和(C语言实现)

    一.功能需求 求1 - 2/3 + 3/5 - 4/7 + ......49/97的和 C语言等级考试中也有涉及到类似的需求. 二.代码分析 仔细查看功能需求,可以发现这个等式的三个规律: 1.从每一 ...

  6. MyBatis从入门到精通:各个实体类

    SysUser类: package tk.mybatis.simple.model; import java.util.Date; public class SysUser { public Long ...

  7. vs断点命不中?

    用管理员权限打开vs,再打开工程即可

  8. Excel催化剂开源第5波-任务窗格在OFFICE2013中新建文档不能同步显示问题解决

    在OFFICE2013及之后,使用了单文档界面技术,不同于以往版本可以共享任务空格.功能区.所以当开发任务窗格时,需要考虑到每一个工作薄都关联一个任务窗格. 背景介绍 单文档界面摘录官方定义如下:对 ...

  9. Linux mysql开启远程访问

    默认情况下远程访问会出现 Can't connect to MySQL server on '192.168.10.18′ (10061) 错误是因为,mysql的默认配置为了增强安全性,禁止了非本机 ...

  10. AQS原理浅析

    锁是最常用的同步方法之一,在高并发的环境下激烈的锁竞争会导致程序的性能下降,所以我们自然有必要深入的学习一下锁的相关知识. java的内置锁一直都是备受争议的,在JDK 1.6之前,synchroni ...