परिचय
विभिन्न लॉक्स की एक सूची और कीज़ की एक अन्य सूची दी गई है। हमारा कार्य दी गई सूची से लॉक और की के सही मिलान को ढूंढना है, और जब यह सही हो तो उस की को लॉक के साथ असाइन करना है।
इस दृष्टिकोण में हम सभी लॉक्स को पार करेंगे और एक हैश-मैप बनाएंगे, उसके बाद, प्रत्येक की को हैश-मैप में खोजा जाएगा। जब की मेल खाती है, तो उसे वैध की के रूप में चिह्नित किया जाता है और एक लॉक के साथ असाइन किया जाता है।
इनपुट और आउटपुट
इनपुट: लॉक्स और कीज़ की सूचियाँ।
lock = { ),@,*,^,(,%, !,$,&,#}
key = { !, (, #, %, ), ^, &, *, $, @ }
आउटपुट: लॉक्स और कीज़ के मिलान के बाद:
Locks: ! ( # % ) ^ & * $ @
Keys: ! ( # % ) ^ & * $ @
एल्गोरिदम
lockAndKeyProblem(lock, key, n)
इनपुट: लॉक्स की सूची, कीज़ की सूची, n
आउटपुट: ढूंढें कि कौन सी की किस लॉक के लिए है
Begin
हैशमैप परिभाषित करें
i के लिए रेंज (0 से n-1) तक, करें
hashmap[lock[i]] := i // लॉक्स के लिए हैशमैप सेट करें
done
i के लिए रेंज (0 से n-1) तक, करें
यदि key[i] हैशमैप में मिलता है, तो
lock[i] = key[i]
done
End
उदाहरण (C++ कोड)
#include <iostream>
#include <map>
using namespace std;
void show(char array[], int n) {
for (int i = 0; i < n; i++)
cout << array[i] << " ";
}
void lockAndKeyProblem(char lock[], char key[], int n) {
map<char, int> hashMap;
for (int i = 0; i < n; i++)
hashMap[lock[i]] = i; // लॉक्स के लिए हैश मैप
for (int i = 0; i < n; i++) // प्रत्येक लॉक के लिए प्रत्येक की
if (hashMap.find(key[i]) != hashMap.end()) {
lock[i] = key[i];
}
}
int main() {
char lock[] = {')','@','*','^','(','%','!','$','&','#'};
char key[] = {'!','(','#','%',' )','^','&','*','$','@'};
int n = 10;
lockAndKeyProblem(lock, key, n);
cout << "After matching Locks and Keys:" << endl;
cout << "Locks: "; show(lock, n); cout << endl;
cout << "Keys: "; show(key, n); cout << endl;
}
आउटपुट
After matching Locks and Keys: Locks: ! ( # % ) ^ & * $ @ Keys: ! ( # % ) ^ & * $ @