您的位置:首页 > 科技 > IT业 > 如何搭建系统平台_网站建设需经历的步骤_夸克搜索_seo免费工具

如何搭建系统平台_网站建设需经历的步骤_夸克搜索_seo免费工具

2024/12/23 3:16:04 来源:https://blog.csdn.net/yannan20190313/article/details/143429888  浏览:    关键词:如何搭建系统平台_网站建设需经历的步骤_夸克搜索_seo免费工具
如何搭建系统平台_网站建设需经历的步骤_夸克搜索_seo免费工具
【力扣题】题目描述:

(题意理解)统计如下:

① 字母个数本身是偶数。

② 字母个数是奇数,统计奇数中的偶数部分,例如:字母个数为3,统计其中的2。

③ 中间可以有一个奇数字母。即只要有奇数,不论多少奇数,最终总和再加一个1。

【Python3】代码:

解题思路:先统计出各字符总共出现次数,加和偶数部分(包括奇数的偶数部分),若有奇数最后再加1。用变量isodd记录是否有奇数。

知识点:{ }:空字典。字典:键值对的序列。

              字典[键]:获取或修改键对应的值。

             字典.values():返回字典中所有值。

             b % 2 == 0:判断数值是否为偶数。

class Solution:def longestPalindrome(self, s: str) -> int:# 遍历字符串中每个字符,用字典统计出现个数adict = {}for a in s:if a not in adict: adict[a] = 1 else: adict[a] += 1# 遍历字典的所有值,所有偶数加和(含奇数的偶数部分)isodd = 0      # 用于记录是否有奇数total = 0for b in adict.values():if b % 2 == 0: total += belse: total += b - 1isodd = 1# 最多一个奇数在中间,若有奇数最后再加1return total + 1 if isodd == 1 else total

可以在用字典统计个数时,加总偶数,最后总和小于字符串长度,则表示有奇数,最后加1。

class Solution:def longestPalindrome(self, s: str) -> int:# 遍历字符串所有字符,用字典统计个数,统计到偶数个,加入总和,字典中恢复为0total = 0adict = {}for a in s:if a not in adict: adict[a] = 1 else: adict[a] += 1# 若个数是偶数即2,则总和+2,字典中对应值恢复为0if adict[a] % 2 == 0:total += 2adict[a] = 0# 若总和小于字符串长度(即有奇数),则总和加1return total + 1 if total < len(s) else total

python的collections库中Counter类可直接统计各元素出现个数。类似字典。

class Solution:def longestPalindrome(self, s: str) -> int:# 统计各字母出现次数adict = collections.Counter(s)# 遍历各字母的个数,偶数部分加和total = 0for b in adict.values():if b % 2 == 0: total += belse: total += b - 1# 若有奇数,最后总和加1return total + 1 if total < len(s) else total 

(官方题解)贪心

统计各字母出现次数,遍历各字母个数,加总偶数部分,若有奇数只加一次1。

知识点: b // 2:除法取整。例如:3 // 2 = 1。

                b % 2 == 1:判断数值是否是奇数。

class Solution:def longestPalindrome(self, s: str) -> int:# 统计各字母出现次数adict = collections.Counter(s)# 遍历各字母个数,偶数部分加和,若有奇数且总和为偶数则加1total = 0for b in adict.values():total += b // 2 * 2# 字母个数为奇数,总和为偶数,即确保只有一个奇数在中间位置if b % 2 == 1 and total % 2 == 0:total += 1return total

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com