पालिंड्रोम (Palindrome)
पालिंड्रोम एक शब्द, वाक्यांश या संख्या है जो पीछे से आगे की तरह ही पढ़ी जाती है। उदाहरण: मलयालम, मादाम, नर्सेस रन आदि।
यहां हमें केवल अल्फान्यूमेरिक वर्णों की अनुमति देने के लिए रेगुलर एक्सप्रेशन का उपयोग करना चाहिए। "\W" एक अंतर्निहित रेगेक्स है जो हमारा कार्य आसान बनाता है। यह जांचने के लिए कुछ चरण हैं कि प्रदान की गई स्ट्रिंग पालिंड्रोम है या नहीं।
अनुसरण करने के चरण
- सबसे पहले स्ट्रिंग के सभी वर्णों को लोअरकेस में बदलें।
- बाद में सभी नॉन-अल्फान्यूमेरिक मान हटाएं। यह अंतर्निहित रेगुलर एक्सप्रेशन
'\W'या अपना खुद का रेगेक्स बनाकर किया जा सकता है। - सभी नॉन-अल्फान्यूमेरिक मानों को खाली स्ट्रिंग
""से बदलें। यहreplace()मेथड से किया जा सकता है। - एक बार स्ट्रिंग से नॉन-अल्फान्यूमेरिक मान हट जाने के बाद, जांचें कि क्या यह आगे और पीछे दोनों दिशाओं में समान पढ़ता है।
- परिष्कृत स्ट्रिंग को
string.reverse()मेथड का उपयोग करके उल्टा करें और परिणामी स्ट्रिंग की तुलना मूल स्ट्रिंग से करें। - यदि दोनों समान हैं तो आउटपुट में
"true"प्रदर्शित होगा अन्यथा"false"प्रदर्शित होगा।
निम्न उदाहरण में *, & जैसे नॉन-अल्फान्यूमेरिक मान भेजने के बावजूद, प्रोग्राम केवल अल्फान्यूमेरिक मानों की जांच करता है और आउटपुट प्रदर्शित करता है।
उदाहरण
<html>
<body>
<script>
function palindrome(str) {
var reg = /[\W_]/g;
// '\W' के बजाय "/[^a-zA-Z0-9]+/g" भी उपयोग कर सकते हैं
var smstr = str.toLowerCase().replace(reg, "");
var reversed = smstr.split("").reverse().join("");
if(reversed === smstr) {
document.write("true");
} else {
document.write("false");
}
}
palindrome("a929a*/(';;-=,.*");
</script>
</body>
</html>
आउटपुट
true
रेगेक्स व्याख्या
[\W_]- सभी नॉन-वर्ड वर्ण (अल्फान्यूमेरिक + अंडरस्कोर के अलावा) से मेल खाता हैg- ग्लोबल फ्लैग (सभी घटनाएं)[^a-zA-Z0-9]- स्पष्ट रूप से केवल अल्फान्यूमेरिक की अनुमति देता है
आधुनिक संस्करण
const isPalindrome = (str) => {
const cleaned = str.toLowerCase().replace(/[^a-z0-9]/g, '');
return cleaned === [...cleaned].reverse().join('');
};
console.log(isPalindrome("A man, a plan, a canal: Panama")); // true
console.log(isPalindrome("race a car")); // false