C/C++:
char* find(char **data,int n);
Java:
String find(String data[]);
说明:
1. data是字符串数组,n是数组中字符串的个数,返回值为出现次数最多的字符串。
2. 若结果有多个,返回任意一个即可
3. 不得使用任何库函数/API,如需使用类似功能, 请自行实现
4. 算法效率尽可能高,尽量少的使用内存空间
5. 必须要有代码注释和算法说明。
例如:data里面的数据是{“paper”,”cup”,”book”,”cup”,”pen”,”book”}。n = 6。返回结果为”cup”或”book”。
简单的算法,用第一个字符串与后面的所有字符串比较,记录有多少个相同。然后再第二个,第三个依次完成比较,看记录的相同个数哪个最大,就是你想要的结果。
楼上的方式,N^2的复杂度
你可以构建一棵字典树的方式,得到出现次数最多的字符串
用两个素数哈希就可以了
用两个素数哈希就可以了