【算法】2278. 字母在字符串中的百分比(多语言实现)

187 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情


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

分析

  • 面对这道算法题目,二当家的陷入了沉思。
  • 遍历一遍字符串,计数有多少个给定字母是必然的。只不过很多语言有自带的API功能。
  • 最后计算百分比有个小细节,如果先做除法再做乘法,就需要小数与整数互转。

题解

rust

impl Solution {
    pub fn percentage_letter(s: String, letter: char) -> i32 {
        (s.as_bytes().iter().filter(|&&c| { c == letter as u8 }).count() * 100 / s.len()) as i32
    }
}

go

func percentageLetter(s string, letter byte) int {
    return strings.Count(s, string(letter)) * 100 / len(s)
}

typescript

function percentageLetter(s: string, letter: string): number {
    let cnt = 0;
    for (const c of s) {
        if (c === letter) {
            cnt++;
        }
    }
    return Math.floor(cnt * 100 / s.length);
};

c

int percentageLetter(char * s, char letter){
    int l = 0;
    int cnt = 0;

    while (*s) {
        if (*s == letter) {
            ++cnt;
        }
        ++l;
        ++s;
    }

    return cnt * 100 / l;
}      

c++

class Solution {
public:
    int percentageLetter(string s, char letter) {
        int count = 0;

        for (char &c: s) {
            if (c == letter) {
                ++count;
            }
        }

        return count * 100 / s.length();
    }
};

java

class Solution {
    public int percentageLetter(String s, char letter) {
        int count = 0;
        for (int i = 0; i < s.length(); ++i) {
            if (letter == s.charAt(i)) {
                ++count;
            }
        }

        return count * 100 / s.length();
    }
}

python

class Solution:
    def percentageLetter(self, s: str, letter: str) -> int:
        return s.count(letter) * 100 // len(s)
        

原题传送门:https://leetcode.cn/problems/percentage-of-letter-in-string/


非常感谢你阅读本文~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://juejin.cn/user/2771185768884824/posts 博客原创~