题目:a~z包括大小写与0~9组成的N个数,用最快的方式把其中重复的元素挑出来。
解题思路:这是百度2010年的一道面试题。题目要求是用最快的方式查找,那么可以想到利用hashtable,将a~z、A~Z和0~9作为hashtable的键,将它们各自出现的次数作为hashtable的值,只要hashtable中的值大于1,那么其对应的元素即为重复元素,代码如下:
#include <iostream>
using namespace std;
void repeat_element(char* test){
char arr[256] = {0};
char* p = test;
while (*p != '\0'){
if (arr[*p] == 1){
cout << "repeat element: " << *p << endl;
arr[*p]++;
}
else{
arr[*p]++;
}
p++;
}
}
int main(){
char* test = "123abc456DBX32bdscAB";
repeat_element(test);
system("pause");
return 0;
}