三、 【函数形式】输入一个字符串 str,输出第 m 个只出现过 n 次的字符。如在字符串 gbgkkdehh 中,找出第 2 个只出现 1 次的字符,输出结果:d。
时间: 2024-12-16 18:31:14 浏览: 7
C语言实现输入一个字符串后打印出该字符串中字符的所有排列
这个问题需要我们编写一个函数,该函数接受一个字符串 `str` 和两个整数 `m` 和 `n` 作为输入,目标是在字符串中找到第 `m` 个只出现了 `n` 次的字符。这里可以先计算每个字符出现的次数,然后按照频率降序排列,最后返回第 `m` 个频率为 `n` 的字符。
以下是Python的一个解决方案:
```python
from collections import Counter
def find_char(str, m, n):
# 使用Counter计算字符串中每个字符及其出现次数
counter = Counter(str)
# 排序字符列表,先按频率降序,如果频率相同再按字典序升序
chars = sorted(counter.items(), key=lambda x: (-x[1], x[0]))
# 遍历字符,找到第m个出现次数为n的字符
for index, (char, freq) in enumerate(chars):
if freq == n and index + 1 == m:
return char
# 如果不存在这样的字符,返回None或抛出异常
return None
# 测试案例
print(find_char("gbgkkdehh", 2, 1)) # 输出:d
```
注意:在实际应用中,由于字符串长度可能非常大,这种逐个遍历的方式可能不是最高效的解决方案。如果性能要求高,可以考虑使用更复杂的数据结构或算法,如哈希表或优先队列来优化查找过程。
阅读全文