题目描述
给定一个字符串 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
-------------本文结束 感谢您的阅读-------------
文章对您有帮助,可以打赏一杯咖啡,鼓励我继续创作!