Can someone explain the normalize function for this hash table, and please provide comments for each line of code: void normalize(string & s) { string t = ""; for (int i = 0; i < s.length(); i++) { if (s[i] <= 'Z' && s[i] >= 'A') s[i] += ('a' - 'A'); if (s[i] <= 'z' && s[i] >= 'a') t+= s[i]; } s = t; }
Can someone explain the normalize function for this hash table, and please provide comments for each line of code:
void normalize(string & s) {
string t = "";
for (int i = 0; i < s.length(); i++) {
if (s[i] <= 'Z' && s[i] >= 'A')
s[i] += ('a' - 'A');
if (s[i] <= 'z' && s[i] >= 'a')
t+= s[i];
}
s = t;
}
unsigned int hashStr(const string & s, int size) {
unsigned int h = s[0];
for (int i = 1; i < s.length(); i++)
//h = (h*i)+s[i]; //My hash
h+=s[i]*26*i;
//h+=s[i];
return h % size ;
}
int main(){
string word;
string originalWord;
int startTableSize;
int endTableSize;
int hashResult;
do{
cout << "Enter the table starting size\n! to quit" << endl;
cin >> startTableSize;
cout << "Enter the table end size\n! to quit" << endl;
cin >> endTableSize;
cout << "Enter a word to hash\n! to quit" << endl;
cin >> word;
originalWord = word;
cout << "Before normalize: " << word << endl;
normalize(word);
cout << "After normalize: " << word << endl << endl;
for(int i = startTableSize; i <= endTableSize; i++){
hashResult = hashStr(word, i);
cout << "Size " << i << " " << hashResult << endl;
}
cout << endl;
}while(originalWord!="!");
cout << "bye" << endl;
return 0;
}
Step by step
Solved in 3 steps with 1 images