📅  最后修改于: 2023-12-03 15:07:34.309000             🧑  作者: Mango
国际空间研究组织(ISRO)是印度政府主管的国家太空局,负责印度的太空计划和研究。ISRO CS 2015是ISRO向公众发布的一组计算机科学问题,考察了计算机科学方面的知识和编程能力。
题目描述:给定一个字符串,找出所有子串中出现次数最多的字符。
具体要求如下:
这是一个字符串处理的问题,需要对字符串进行遍历,并对每个子串的出现次数进行统计。其中,需要用到一个容器来记录每个子串出现的次数,可以使用 C++ 标准库中的 unordered_map
来实现。具体步骤如下:
unordered_map
统计其中每个字符出现的次数。#include <iostream>
#include <unordered_map>
using namespace std;
char max_frequency_char(string s) {
int n = s.length();
int max_freq = 0; // 出现次数最多的字符出现的次数
char max_char = 'a'; // 出现次数最多的字符
for (int i = 0; i < n; ++i) { // 枚举所有的子串
unordered_map<char, int> freq; // 用于统计每个字符出现的次数
for (int j = i; j < n; ++j) {
char c = s[j];
freq[c]++; // 统计每个字符出现的次数
if (freq[c] > max_freq || (freq[c] == max_freq && c < max_char)) {
max_freq = freq[c];
max_char = c;
}
}
}
return max_char;
}
int main() {
string s;
cin >> s;
char ans = max_frequency_char(s);
cout << ans << endl;
return 0;
}
这道题主要考察了字符串的处理、哈希表的使用以及时间复杂度的分析。用 C++ 标准库中的 unordered_map
可以方便地统计每个字符的出现次数,并且查询操作的时间复杂度是常数级别的,时间复杂度为 $O(n^2)$,空间复杂度为 $O(n)$,可以通过本题。