पैलिंड्रोम अनुक्रम:
एक स्ट्रिंग अनुक्रम को पैलिंड्रोम अनुक्रम के रूप में जाना जाता है यदि यह आगे और पीछे से समान पढ़ता है। उदाहरण के लिए, 'अबा', 'मैडम, 'किया' सभी मान्य पैलिंड्रोम सीक्वेंस हैं।
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक स्ट्रिंग को पहले और एकमात्र तर्क के रूप में लेता है। इनपुट के रूप में ली गई स्ट्रिंग में केवल 'ए', 'बी', 'सी' और 'डी' शामिल होने की गारंटी है। हमारे फ़ंक्शन को स्ट्रिंग में दिखाई देने वाले सभी सन्निहित या गैर-सन्निहित पैलिंड्रोम अनुक्रमों की संख्या को गिनना और वापस करना चाहिए।
उदाहरण के लिए -
यदि इनपुट स्ट्रिंग है -
const str = 'bccb';
तब आउटपुट होना चाहिए -
const output = 6;
क्योंकि यहां पैलिंड्रोम तार 'बी', 'सी', 'बीबी', 'सीसी', 'बीसीबी', 'बीसीसीबी' हैं
उदाहरण
इसके लिए कोड होगा -
const str = 'bccb'; const countPalindromes = (str = '') => { let base = 1000000007; const dp = Array(str.length).fill([]); for (let l = 1; l <= str.length; l ++) { for (let i = 0; i + l - 1 < str.length; i ++) { let j = i + l - 1; if (l === 1) { dp[i][j] = 1; continue; } if (l === 2) { dp[i][j] = 2; continue; } if (str[i] === str[j]) { let left = i + 1, right = j - 1; while (left <= right && str[left] != str[i]) { left ++; } while (left <= right && str[right] != str[i]) { right --; } if (left > right) { dp[i][j] = dp[i + 1][j - 1] * 2 + 2; } else if (left === right) { dp[i][j] = dp[i + 1][j - 1] * 2 + 1; } else { dp[i][j] = dp[i + 1][j - 1] * 2 - dp[left + 1][right - 1]; } } else { dp[i][j] = dp[i][j - 1] + dp[i + 1][j] - dp[i + 1][j - 1]; } dp[i][j] = dp[i][j] < 0? dp[i][j] + base : dp[i][j] % base; } } return dp[0][str.length - 1]; }; console.log(countPalindromes(str));
आउटपुट
और कंसोल में आउटपुट होगा -
6