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

LeetCode 3442.奇偶频次间的最大差值 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 至少由一个出现奇数次的字符和一个出现偶数次的字符组成。

先遍历一遍字符串s,统计每个字母的出现次数,然后找出出现次数中,最大的奇数和最小的偶数,相减即可。

C++解法:

class Solution {
public:
    int maxDifference(string s) {
        vector<int> letterToNum(26);
        for (char c : s) {
            ++letterToNum[c - 'a'];
        }

        int minEven = numeric_limits<int>::max();
        int maxOdd = 0;
        for (int i = 0; i < 26; ++i) {
            if (!letterToNum[i]) {
                continue;
            }

            if (letterToNum[i] % 2) {
                maxOdd = max(letterToNum[i], maxOdd);
            } else {
                minEven = min(letterToNum[i], minEven);
            }
        }

        return maxOdd - minEven;
    }
};

go解法:

func maxDifference(s string) int {
    var letterToNum [26]int
    for i := 0; i < len(s); i++ {
        letterToNum[s[i] - 'a']++
    }

    maxOdd := 0
    minEven := math.MaxInt
    for _, value := range letterToNum {
        if value == 0 {
            continue
        }

        if value%2 == 1 {
            if value > maxOdd {
                maxOdd = value
            }
        } else {
            if value < minEven {
                minEven = value
            }
        }
    }

    return maxOdd - minEven
}

如果n是字符串s的长度,则此方法时间复杂度为O(n),空间复杂度为O(1)。


http://www.kler.cn/a/534535.html

相关文章:

  • 《Kettle保姆级教学-界面介绍》
  • Android 常用命令和工具解析之Battery Historian
  • 《运维:技术的基石,服务的保障》
  • Linux 传输层协议 UDP 和 TCP
  • 保姆级教程Docker部署Zookeeper官方镜像
  • Golang 并发机制-5:详解syn包同步原语
  • ASP.NET Core筛选器Filter
  • Vue3.5常用特性整理
  • 一、tsp学习笔记——开发环境搭建
  • 计算机网络笔记再战——理解几个经典的协议6——TCP与UDP
  • Mysql-增删改查(知识点总结)
  • WPS的word文档加密
  • module ‘matplotlib.cm‘ has no attribute ‘get_cmap‘
  • 在https下引用IC卡读卡器web插件
  • LeetCode 257.二叉树的所有路径
  • BUU10 [极客大挑战 2019]LoveSQL1
  • RK3576——USB3.2 OTG无法识别到USB设备
  • docker容器编排工具 docker compose
  • 【Elasticsearch】 邻接矩阵聚合(Adjacency Matrix Aggregation)
  • ASP.NET Core中间件Markdown转换器
  • 数据加载器--不同文档数据格式的加载方法
  • seata 1.3.0 本地安装步骤
  • go-zero学习笔记(四)
  • python(自学10-2)获取豆瓣页面 下载成json格式
  • 7.PPT:“中国梦”学习实践活动【20】
  • MySQL常见的存储引擎和区别