字符串匹配命中率计算

题目链接

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

思路

  • 将字符串转换为字符数组进行逐个匹配
  • 统计命中次数,最终计算命中率(命中次数 / 总长度)

解题过程

  1. 使用String类型接收输入字符串
  2. 转换为字符数组进行遍历匹配
  3. 涉及包:java.lang(自动导入,无需显式声明)

复杂度分析

  • 时间复杂度:$O(n)$
    线性遍历字符串一次
  • 空间复杂度:$O(n)$
    需要创建字符数组存储空间

优化方案

空间复杂度优化

  • 使用charAt()方法替代字符数组转换
  • 优化后空间复杂度:$O(1)$
    直接访问字符串中的字符,无需额外存储空间

代码实现

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public int percentageLetter(String s, char letter) {
int count = 0;
for (char a : s.toCharArray()) {
if (a == letter) {
count++;
}
}
return count * 100 / s.length();
}
}

优化后代码:

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public int percentageLetter(String s, char letter) {
int count = 0;
int length = s.length(); // 提前存储长度,避免多次调用方法
for (int i = 0; i < length; i++) {
if (s.charAt(i) == letter) {
count++;
}
}
return (count * 100) / length;
}
}