博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode-409. 最长回文串(Goland实现)
阅读量:2004 次
发布时间:2019-04-27

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

LeetCode题号:

问题描述:

       给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

注意:

假设字符串的长度不会超过 1010。

示例 1:

输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

解题思路:

 1、先定义一个map统计所有字符出现;

 2、a、如果没有奇数长度串,len = sum(所有偶数长度和)

       b、如果存在奇数长度串,len = sum(所有偶数长度和)+sum(所有奇数串长度和-1)+1

听我分析完,简单吧;上代码,通俗易懂!

func longestPalindrome(s string) int {	var m = make(map[string]int)	for i := 0; i < len(s); i++ {		//统计所有字母出现次数		m[string(s[i])]++		//_, ok := m[string(s[i])]		//if ok {		//	m[string(s[i])]++		//} else {		//	m[string(s[i])] = 1		//}	}	//回文长度	var l int = 0	//标记是否存在奇数对	var flag = false	//最长组合,即为,1:存在奇数串,l=所有偶数对长度+(所有奇数串长度-奇数串个数+1)2、不存在奇数串:l=所有偶数对长度	for _, v := range m {		if len(m) == 1 {			return v		}		if v%2 == 0 {			l += v		} else {			flag = true			//奇数串长度变偶数长度			l += v - 1		}	}	//只要存在奇数串,则最大奇数串可以放最中间,则不需要做减1 处理	if flag {		return l + 1	}	return l}

往期回顾:

【1】

【2】

【3】


❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ 

❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~

❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)

转载地址:http://iigvf.baihongyu.com/

你可能感兴趣的文章
实例属性和类属性
查看>>
使用__slots__
查看>>
使用@property
查看>>
多重继承
查看>>
定制类
查看>>
使用枚举类
查看>>
使用元类
查看>>
错误、调试和测试
查看>>
StringIO和BytesIO
查看>>
SMTP发送邮件
查看>>
POP3收取邮件
查看>>
访问数据库
查看>>
使用SQLite
查看>>
使用MySQL
查看>>
使用SQLAlchemy
查看>>
TS科普26 SDT解析
查看>>
fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”
查看>>
x265 2.0版本更新
查看>>
QueryPerformanceCounter实现Windows微秒级延时
查看>>
tortoisegit 还原到某个版本
查看>>