2278-字母在字符串中的百分比

Raphael Liu Lv10

给你一个字符串 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 是一个小写英文字母

方法一:遍历统计

思路与算法

我们用 n 表示字符串 s 的长度。首先我们遍历字符串,并用 cnt 统计字母 letter 在 s 中的出现次数。那么,s 中 letter 所占的百分比即为 100 \times \textit{cnt} / s,向下取整后的值即为 \lfloor 100 \times \textit{cnt} / s \rfloor(其中 \lfloor \dots \rfloor 代表向下取整)。我们计算上式的值,并作为答案返回即可。

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
int percentageLetter(string s, char letter) {
int n = s.size();
int cnt = 0;
for (char ch: s) {
if (ch == letter) {
++cnt;
}
}
return 100 * cnt / n;
}
};
[sol1-Python3]
1
2
3
4
5
6
7
8
class Solution:
def percentageLetter(self, s: str, letter: str) -> int:
n = len(s)
cnt = 0
for ch in s:
if ch == letter:
cnt += 1
return 100 * cnt // n

复杂度分析

  • 时间复杂度:O(n),其中 n 为 s 的长度。即为遍历计算字符出现次数的时间复杂度。

  • 空间复杂度:O(1)。

 Comments
On this page
2278-字母在字符串中的百分比