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

LeetCode 3442.奇偶频次间的最大差值 I:计数

【LetMeFly】3442.奇偶频次间的最大差值 I:计数

力扣题目链接:https://leetcode.cn/problems/maximum-difference-between-even-and-odd-frequency-i/

给你一个由小写英文字母组成的字符串 s 。请你找出字符串中两个字符的出现频次之间的 最大 差值,这两个字符需要满足:

  • 一个字符在字符串中出现 偶数次
  • 另一个字符在字符串中出现 奇数次 。

返回 最大 差值,计算方法是出现 奇数次 字符的次数 减去 出现 偶数次 字符的次数。

 

示例 1:

输入:s = "aaaaabbc"

输出:3

解释:

  • 字符 'a' 出现 奇数次 ,次数为 5 ;字符 'b' 出现 偶数次 ,次数为 2 。
  • 最大差值为 5 - 2 = 3 。

示例 2:

输入:s = "abcabcab"

输出:1

解释:

  • 字符 'a' 出现 奇数次 ,次数为 3 ;字符 'c' 出现 偶数次 ,次数为 2 。
  • 最大差值为 3 - 2 = 1

 

提示:

  • 3 <= s.length <= 100
  • s 仅由小写英文字母组成。
  • s 至少由一个出现奇数次的字符和一个出现偶数次的字符组成。

解题方法:计数

遍历一遍字符串,统计出每种字符的出现次数。

遍历英文单词的每种字符:

  • 若这种字符出现次数为奇数次,则更新a1的值
  • 否则若这种字符出现次数大于0,则更新a2的值

最终返回 a 1 − a 2 a_1-a_2 a1a2

  • 时间复杂度 O ( l e n ( s ) + C ) O(len(s)+C) O(len(s)+C),其中 C = 26 C=26 C=26
  • 空间复杂度 O ( C ) O(C) O(C)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-06-10 23:07:14* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-06-10 23:14:08*/
class Solution {
public:int maxDifference(string s) {int cnt[26] = {0};for (char c : s) {cnt[c - 'a']++;}int a1 = 0, a2 = 100;for (int c : cnt) {if (c % 2) {a1 = max(a1, c);} else if (c) {a2 = min(a2, c);}}return a1 - a2;}
};
Python
'''
Author: LetMeFly
Date: 2025-06-10 23:07:14
LastEditors: LetMeFly.xyz
LastEditTime: 2025-06-10 23:18:45
'''
from collections import Counterclass Solution:def maxDifference(self, s: str) -> int:cnt = Counter(s)return max(v for v in cnt.values() if v % 2) - min(v for v in cnt.values() if v % 2 == 0)
Java
/** @Author: LetMeFly* @Date: 2025-06-10 23:07:14* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-06-10 23:40:04*/
class Solution {public int maxDifference(String s) {int[] cnt = new int[26];for (char c : s.toCharArray()) {cnt[c - 'a']++;}int a1 = 0, a2 = 100;for (int t : cnt) {if (t % 2 == 1) {a1 = Math.max(a1, t);} else if (t > 0) {a2 = Math.min(a2, t);}}return a1 - a2;}
}
Go
/** @Author: LetMeFly* @Date: 2025-06-10 23:07:14* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-06-10 23:20:56*/
package mainfunc maxDifference(s string) int {cnt := [26]int{}for _, c := range s {cnt[c - 'a']++}a1, a2 := 0, 100for _, t := range cnt {if t % 2 == 1 {a1 = max(a1, t)} else if t > 0 {a2 = min(a2, t)}}return a1 - a2
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

http://www.xdnf.cn/news/970129.html

相关文章:

  • 使用分级同态加密防御梯度泄漏
  • Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:智驿AI系统(前后端源码 + 数据库 sql 脚本)
  • 实现多路视频截图预览之后上传到后台系统
  • 2025年ASOC SCI2区TOP,协同搜索框架自适应算法+多无人机巡检规划,深度解析+性能实测
  • 专题一_双指针_复写零
  • HDFS 3.4.1 集成Kerberos 实现账户认证
  • 驭码CodeRider 2.0深度测评:助力高效开发【探索化学奇妙世界】网站
  • 【靶场】xxe漏洞2
  • 黑马Mybatis
  • UE5 学习系列(三)创建和移动物体
  • MySQL事务——博主总结
  • C# Serilog 日志
  • 西电计组第四章-存储系统
  • 72道Nginx高频题整理(附答案背诵版)
  • 【Qt】显示类控件 QLabel、QLCDNumer、QProgressBar、QCalendarWidget
  • ROS-编写工作区、功能包、节点
  • 通过Elastic EDR看smbexec并进行二次开发Bypass
  • @component、@bean、@Configuration的区别
  • 在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
  • MySQL:InnoDB架构(内存架构篇)
  • Grey任命李文杰为中国总裁,开启增长新章
  • 云服务运行安全创新标杆:阿里云飞天洛神云网络子系统“齐天”再次斩获奖项
  • 12要素法:构建高效云原生应用
  • 鸿蒙Next仓颉语言开发实战教程:下拉刷新和上拉加载更多
  • leetcode:42. 接雨水(秒变简单题)
  • 代码训练LeetCode(27)接雨水
  • 【PX4飞控】右手坐标系与右手系旋转正方向的定义与判断方法
  • go全局配置redis,全局只需要连接一次,然后全局可以引用使用
  • UVa12298 3KP-BASH Project
  • Codeforces Round 1027 (Div. 3)-G