字符串中第m个出现n次的字符

题目描述

给定一个字符串 str ,编写一个函数用来查找字符串中第 m 个出现 n 次的字符。

示例:

1
2
输入:str=“abbcdedbf” m = 1 n = 3
输出:b

说明:

你可以假设字符串只包含小写字母。

题目解答

哈希表,我们使用一个保持元素加入顺序的 LinkedHashMap 来统计每一个字符出现的次数,统计出词频之后遍历哈希表中元素,如果元素出现次数和要查找字符出现次数 n 相等,m 减 1,当 m 值为 0 时所对应的元素就是目标字符,如果遍历完哈希表都没有找到目标字符,则目标字符不存在。

时间复杂度:$O(n)$ 空间复杂度:$O(1)$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public Character search(String str, int m, int n) {
Map<Character, Integer> dict = new LinkedHashMap<>();
for (char ch : str.toCharArray()) {
dict.put(ch, dict.getOrDefault(ch, 0) + 1);
}
for (char ch : dict.keySet()) {
if (dict.get(ch) == n) {
if (--m == 0) {
return ch;
}
}
}
return null;
}
}

输入:str=“abbcdedbf” m = 2 n = 1
输出:c

-------------本文结束 感谢您的阅读-------------

文章对您有帮助,可以打赏一杯咖啡,鼓励我继续创作!