当前位置: 首页 > news >正文

LeetCode -- Longest Palindrome

题目描述:
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:
7


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

给定一个字符串,利用字符串中的字符组成回文,返回最大回文长度。


一开始以为本题是判断字符串存在的最大回文长度,准备使用分治。后来仔细看发现不是,直接使用哈希统计每个字符出现次数即可:
如果为偶数:直接累加。
如果是奇数,判断-1后是否为偶数,如果为偶数,累加这个偶数。
标记是否出现过奇数(放在回文中间,结果累加1)




实现代码:


public class Solution {
    public int LongestPalindrome(string s) {
        if(string.IsNullOrWhiteSpace(s)){
    		return 0;
    	}
    	
    	var dict = new Dictionary<char, int>();
    	
    	var len = s.Length;
    	for (var i = 0;i < len; i++){
    		if(!dict.ContainsKey(s[i])){
    			dict.Add(s[i], 1);
    		}
    		else{
    			dict[s[i]] ++;
    		}
    	}
    	
    	int maxLen = 0;
    	bool hasMid = false;
    	foreach (var k in dict.Keys){
    		if(dict[k] % 2 == 0){
    			maxLen += dict[k];
    		}else{
    			hasMid = true;
    			if(dict[k] - 1 > 1){
    				maxLen += dict[k] - 1;
    			}
    		}
    	}
    	
    	if(hasMid){
    		maxLen ++;
    	}
    	
    	return maxLen;
    }
}


相关文章:

  • 有朋远方来-致力于java培训的张孝祥
  • LeetCode -- Range Sum Query 2D - Immutable
  • 从Oracle到DB2,问题集(一)
  • LeetCode -- Dungeon Game
  • 从Oracle到DB2,问题集(二)
  • LeetCode -- Contains Duplicate II
  • Sql union的反义词Minus
  • LeetCode -- Path Sum III
  • LeetCode -- Minimum Number of Arrows to Burst Balloons
  • 反醒反醒
  • LeetCode -- Arranging Coins
  • Bing在中国不会成功
  • LeetCode -- First Unique Character in a String
  • 搜狗输入法,无心插柳柳成荫
  • LeetCode -- Wildcard Matching
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • C++类中的特殊成员函数
  • CentOS7 安装JDK
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JavaScript设计模式之工厂模式
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python实现BT种子转化为磁力链接【实战】
  • session共享问题解决方案
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 从0实现一个tiny react(三)生命周期
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 基于HAProxy的高性能缓存服务器nuster
  • 详解移动APP与web APP的区别
  • 阿里云ACE认证之理解CDN技术
  • #数学建模# 线性规划问题的Matlab求解
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (C语言)fread与fwrite详解
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ***详解账号泄露:全球约1亿用户已泄露
  • .apk 成为历史!
  • .bat批处理(一):@echo off
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [C++] 统计程序耗时
  • [CF]Codeforces Round #551 (Div. 2)
  • [CISCN2019 华东南赛区]Web11
  • [docker]docker网络-直接路由模式
  • [LeetCode]-Integer to Roman 阿拉伯数字转罗马数字