给你一个字符串 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 <= 100s由小写英文字母组成letter是一个小写英文字母
思路与算法:
我们用 n 表示字符串 s 的长度。首先我们遍历字符串,并用 cnt 统计字母 letter 在 s 中的出现次数。那么,s 中 letter 所占的百分比即为 100×cnt/s,向下取整后的值即为 ⌊100×cnt/s⌋(其中 ⌊…⌋ 代表向下取整)。我们计算上式的值,并作为答案返回即可。
代码:
class Solution {
public int percentageLetter(String s, char letter) {
int n = s.length();
int cnt = 0;
for (char ch : s.toCharArray()) {
if (ch == letter) {
++cnt;
}
}
return 100 * cnt / n;
}
}
复杂度分析
- 时间复杂度:O(n),其中 n 为 s 的长度。即为遍历计算字符出现次数的时间复杂度。
- 空间复杂度:O(1)。