📅  最后修改于: 2023-12-03 14:58:36.710000             🧑  作者: Mango
本题要求编写一个程序,根据输入的字符串,从中判断是否存在某个子串出现超过一半以上。
本题需要考虑空间复杂度,因此,我们可以用哈希表来记录每个子串的出现次数。具体实现中,我们可以使用 $unordered_map$ 来作为哈希表,实现字符串到出现次数的映射。对于每个子串,记录其出现次数,如果出现次数超过了字符串长度的一半,就可以得到该子串。
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main() {
string str;
cin >> str;
int n = str.size();
unordered_map<string, int> mp;
for (int i = 0; i < n; i++) {
for (int j = 1; j <= n - i; j++) {
string temp = str.substr(i, j);
mp[temp]++;
if (mp[temp] > n / 2) {
cout << temp << endl;
return 0;
}
}
}
cout << "None" << endl;
return 0;
}
本题考查的是字符串的枚举和哈希表的使用,通过对题目的分析和对解题思路的理解,可以帮助我们更好地理解字符串和哈希表相关的知识点。