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