हमें एक फ़ंक्शन लिखना आवश्यक है, मान लीजिए isEqual() जो दो स्ट्रिंग्स को आर्गुमेंट के रूप में लेता है और जांचता है कि क्या उन दोनों में उनके क्रम और केस से स्वतंत्र रूप से समान कैरेक्टर्स हैं।
उदाहरण के लिए:
const first = 'Aavsg'; const second = 'VSAAg'; isEqual(first, second); //true
विधि 1: ऐरे का उपयोग करना
इस विधि में हम स्ट्रिंग्स को ऐरे में बदलते हैं, Array.prototype.sort() मेथड का उपयोग करते हैं, उन्हें वापस स्ट्रिंग्स में बदलते हैं और समानता की जांच करते हैं।
इसके लिए कोड होगा:
उदाहरण
const first = 'Aavsg';
const second = 'VSAAg';
const stringSort = function(){
return this.split("").sort().join("");
}
String.prototype.sort = stringSort;
const isEqual = (first, second) => first.toLowerCase().sort() === second.toLowerCase().sort();
console.log(isEqual(first, second));
विधि 2: मैप का उपयोग करना
इस विधि में हम दोनों स्ट्रिंग्स पर एक ही समय में पुनरावृति करते हैं, एक मैप में कैरेक्टर फ्रीक्वेंसी को इस तरह स्टोर करते हैं:
-1, यदि यह पहली स्ट्रिंग में आता है, +1, यदि यह दूसरी स्ट्रिंग में आता है,
अंत में, यदि सभी कीज 0 तक जुड़ते हैं, तो हम निष्कर्ष निकालते हैं कि स्ट्रिंग्स समान हैं अन्यथा नहीं।
इसके लिए कोड होगा:
उदाहरण
const first = 'Aavsg';
const second = 'VSAAg';
const isEqual = (first, second) => {
if(first.length !== second.length){
return false;
}
first = first.toLowerCase();
second = second.toLowerCase();
const map = {};
for(ind in first){
if(map[first[ind]]){
map[first[ind]]++;
}else{
map[first[ind]] = 1;
}
if(map[second[ind]]){
map[second[ind]]--;
}else{
map[second[ind]] = -1;
}
};
return Object.values(map).reduce((acc, val) => val === 0 && acc, true);
};
console.log(isEqual(first, second));
आउटपुट
दोनों के लिए कंसोल में आउटपुट होगा:
true