समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो स्ट्रिंग्स की एक सरणी को एकमात्र आर्गुमेंट के रूप में लेता है। फ़ंक्शन को उन सभी इंडेक्स जोड़े की सरणी की सरणी वापस करनी चाहिए जिन पर स्ट्रिंग्स को जोड़ने से एक नई पैलिंड्रोम स्ट्रिंग प्राप्त होती है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = ['tab', 'cat', 'bat'];
तो आउटपुट होना चाहिए -
const output = [[0, 2], [2, 0]];
आउटपुट व्याख्या:
क्योंकि दोनों स्ट्रिंग्स 'battab' और 'tabbat' पैलिंड्रोम हैं।
उदाहरण
इसके लिए कोड होगा -
const arr = ['tab', 'cat', 'bat'];
const isPalindrome = (str = '') => {
let i = 0;
let j = str.length - 1;
while (i < j) {
if (str[i] != str[j]) return false;
i++;
j--;
};
return true;
};
const palindromePairs = (arr = []) => {
const res = [];
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (isPalindrome(arr[i] + arr[j])) {
res.push([i, j])
}
if (isPalindrome(arr[j] + arr[i])) {
res.push([j, i])
};
};
};
return res;
};
console.log(palindromePairs(arr));
कोड व्याख्या
हमने यहां एक हेल्पर फ़ंक्शन isPalindome() का उपयोग किया है यह जांचने के लिए कि कोई स्ट्रिंग पैलिंड्रोम है या नहीं और हमारा मुख्य फ़ंक्शन सभी संभावित जोड़े उत्पन्न करने के लिए सभी संयोजनों का उपयोग करता है और जो हमारी शर्तों से मेल खाते हैं, उनका इंडेक्स res सरणी में डाला जाता है।
आउटपुट
कंसोल में आउटपुट होगा -
[ [ 0, 2 ], [ 2, 0 ] ]