[LeetCode] 每日一题 2278. 字母在字符串中的百分比(简单计数)
题目链接
题目描述
给你一个字符串 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
是一个小写英文字母
解题思路
这道题是 简单的统计和计算,核心思路非常直白:
遍历字符串
s
,统计letter
出现的次数计算
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