文章

[LeetCode] 每日一题 2278. 字母在字符串中的百分比(简单计数)

题目链接

https://leetcode.cn/problems/percentage-of-letter-in-string

题目描述

给你一个字符串 s 和一个字符 letter ,返回在 s 中等于 letter 字符所占的 百分比 ,向下取整到最接近的百分比。

示例输入

示例 1

输入:s = "foobar", letter = "o"
输出:33
解释:
等于字母 'o' 的字符在 s 中占到的百分比是 2 / 6 * 100% = 33% ,向下取整,所以返回 33 。

示例 2

输入:s = "jjjj", letter = "k"
输出:0
解释:
等于字母 'k' 的字符在 s 中占到的百分比是 0% ,所以返回 0 。

提示

  • 1 <= s.length <= 100

  • s 由小写英文字母组成

  • letter 是一个小写英文字母

解题思路

这道题是 简单的统计和计算,核心思路非常直白:

  1. 遍历字符串 s,统计 letter 出现的次数

  2. 计算 letter 所占的百分比,向下取整返回结果

尽管题目简单,但有 两个细节需要注意

  • 防止除零错误

    • 先检查字符串长度是否为 0,避免分母为 0

  • 避免精度丢失

    • 计算百分比时,先 count * 100/ s.length(),防止浮点数误差或整数除法导致的精度损失

这题的难度不高,但需要注意 整数除法的向下取整特性,确保计算结果符合预期🚀

代码实现

class Solution {
    public int percentageLetter(String s, char letter) {
        if (s.length() == 0) {
            return 0;
        }
        int count = 0;
        for (char c : s.toCharArray()) {
            if (c == letter) {
                count++;
            }
        }
        return count * 100 / s.length();
    }
}

复杂度分析

  • 时间复杂度: O(n) 🚀

    • 只需遍历字符串一次,逐个统计字符出现次数,因此时间复杂度为 O(n)

  • 空间复杂度: O(1) 🏎️

    • 只使用了 一个计数变量,不额外占用空间,属于 原地计算

总结

这题属于 基础的字符串统计问题,只需 遍历字符串统计字符个数,然后 计算百分比 即可。关键在于 处理除零情况正确计算整数除法,避免精度丢失。这类简单题目有助于巩固 基本的计算思维💡

希望这篇分享能为你带来启发!如果你有任何问题或建议,欢迎在评论区留言,与我共同交流探讨。

License:  CC BY 4.0