字母在字符串中的百分比

38 阅读1分钟

给你一个字符串 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×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)。