当前位置: 首页 > 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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关文章:

  • gro文件和top文件介绍,以及如何合并两个gro文件或两个top文件
  • 天猫官方认证TP服务商——品融电商代运营全链路解析
  • WHAT - 组件库单入口打包和多入口打包
  • 基于FPGA的PID算法学习———实现PID比例控制算法
  • 大型活动交通拥堵治理的视觉算法应用
  • 如何保证RocketMQ消息不丢失
  • 《广度优先搜索》题集
  • 钉钉告警集成部署指南
  • ROS move base 简易调试
  • 在postgresql中,group by时取第一个值
  • AIGC 基础篇 Python基础 04 for循环与while循环
  • 华为仓颉语言初识:并发编程之同步机制(下)
  • 华为0528笔试
  • 基于流形迁移学习的快速动态多目标进化算法(MMTL-MOEA/D)求解FDA1-FDA5和dMOP1-dMOP3,提供完整MATLAB代码
  • C++中的跳转语句
  • 大模型中Function Call的定义与核心功能
  • MMaDA: Multimodal Large Diffusion Language Models
  • AWS Lambda Python + AWS Secrets Manager + AWS Aurora Mysql
  • jupyterhub的浅浅使用-重点在解决无法登录
  • 第四章 RAG 知识库基础
  • kuler网站/地推放单平台
  • 网站做计算功能/如何查询网站收录情况
  • 多语种网站营销/seo网站推广杭州
  • 湖南专业做网站企业/seo在线优化网站
  • 深圳专业做网站的公司哪家好/海外推广代理公司
  • 欧派整装大家居装修公司加盟/快速优化官网