【发布时间】:2015-06-07 16:48:03
【问题描述】:
如果给定一个字符串,例如 "aaabbccc",你将如何输出 'a',因为它与 'c' 一样频繁出现,但首先出现。
我使用了 O(n) 时间,但我不知道你将如何使用 log(n) 时间来做到这一点,无论是在 java 还是 c++ 中。
编辑: 这是一道面试题。
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::cin;
using std::endl;
char findFreqChar(string str) {
int count;
int maxOccur = 0;
char maxChar;
for (char i = 'A'; i < 'z'; i++) {
count = 0;
for (int j = 0; j < str.length(); j++) {
if (i == str[j])
count++;
}
if (count > maxOccur) {
maxOccur = count;
maxChar = i;
}
}
return maxChar;
}
int main() {
std::cout << "Enter String: ";
std::string str;
std::getline(std::cin, str);
cout << findFreqChar(str);
cin.get();
}
【问题讨论】:
-
拆分它?并继续拆分?
-
这个问题更适合cs.stackexchange.com。
-
我很确定面试问题不是这样制定的。