Last updated on October 5th, 2024 at 04:23 pm
Here, We see Palindromic Substrings LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Topics
Dynamic Programming, String
Companies
Level of Question
Medium
Palindromic Substrings LeetCode Solution
Table of Contents
Problem Statement
Given a string s
, return the number of palindromic substrings in it. A string is a palindrome when it reads the same backward as forward.
A substring is a contiguous sequence of characters within the string.
Example 1:
Input: s = “ABC”
Output: 3
Explanation: Three palindromic strings: “a”, “b”, “c”.
Example 2:
Input: s = “aaa”
Output: 6
Explanation: Six palindromic strings: “a”, “a”, “a”, “aa”, “aa”, “aaa”.
1. Palindromic Substrings Leetcode Solution C++
class Solution { public: int countSubstrings(string s) { int n = s.length(), ans = 0; for (int i = 0; i < n; ++i) { int even = palindromeCount(s, i, i + 1); int odd = palindromeCount(s, i, i); ans += even + odd; } return ans; } int palindromeCount(const string& s, int left, int right) { int count = 0; while (left >= 0 && right < s.length() && s[left] == s[right]) { --left; ++right; ++count; } return count; } };
2. Palindromic Substrings Leetcode Solution Java
class Solution { public int countSubstrings(String s) { int n = s.length(); int ans = 0; for(int i=0;i<n;i++) { int even = palindromeCount(s, i, i+1); int odd = palindromeCount(s, i-1, i+1); ans += even + odd + 1; } return ans; } public int palindromeCount(String s, int left, int right) { int count = 0; while(left >= 0 && right < s.length() && s.charAt(left--) == s.charAt(right++)) { count++; } return count; } }
3. Palindromic Substrings Leetcode Solution JavaScript
var countSubstrings = function(s) { const n = s.length; const palindrome = Array.from(Array(n), () => Array(n).fill(false)); let ans = 0; for (let i = 0; i < n; i++) { palindrome[i][i] = true; ans++; } for (let i = 0; i < n - 1; i++) { if (s[i] === s[i + 1]) { palindrome[i][i + 1] = true; ans++; } } for (let len = 3; len <= n; len++) { for (let i = 0; i < n - len + 1; i++) { if (s[i] === s[i + len - 1] && palindrome[i + 1][i + len - 2]) { palindrome[i][i + len - 1] = true; ans++; } } } return ans; };
4. Palindromic Substrings Leetcode Solution Python
class Solution(object): def countSubstrings(self, s): n, ans = len(s), 0 def palindromeCount(left, right): count = 0 while left >= 0 and right < n and s[left] == s[right]: left -= 1 right += 1 count += 1 return count for i in range(n): even = palindromeCount(i, i + 1) odd = palindromeCount(i, i) ans += even + odd return ans