问题:找出字符串中第一个只出现一次的字符,字符串区分大小写。比如输入字符串ddFDfsdfdsllf,就应该输出F。
注:哈希查找算法的查找效率是很高的,是一种利用空间换时间思想的典型算法。
1 #include<iostream> 2 #include<cstdlib> 3 #include<string> 4 #include<cctype> 5 using namespace std; 6 class Firstchar 7 { 8 public: 9 int n; //共52个大小写字母 10 string s; //输入的字符串,只能含有大小写 11 typedef struct Hash //哈希表单元,存储字符和次数 12 { 13 char ch; 14 int num; 15 }; 16 Hash *HashTable; 17 char first; //第一次只出现一次的字符 18 19 Firstchar(const string &str) 20 { 21 n = 52; 22 HashTable = new Hash[n]; 23 if (!HashTable) 24 { 25 cout << "内存不足,程序退出!"; 26 exit(1); 27 } 28 int i; 29 for (i = 0; i < n; i++) 30 { 31 HashTable[i].ch = '