/>

Lesson 5 — Intermediate

DP on Strings & Grids

Strings aur grids pe DP bahut common hai interviews mein. Strings mein Palindrome checking, String Encoding, Word Break — ye sab DP se solve hote hain. Grids mein Unique Paths, Minimum Path Sum, Dungeon Game — 2D DP ka sabse accha example. Is lesson mein hum dono types dekhenge — 1D string DP aur 2D grid DP.

⏱ 30 min• Intermediate• LIS, LCS

Palindrome Check (DP)

String palindrome hai ya nahi — DP se O(n^2) mein check karte hain. Longer substrings ke liye shorter substrings ka result use hota hai:

# Longest Palindromic Substring — DP approach
def longestPalindrome(s):
 n = len(s)
 dp = [[False] * n for _ in range(n)]
 start, max_len = 0, 1
 
 # Single characters are palindromes
 for i in range(n):
 dp[i][i] = True
 
 # Check for length 2
 for i in range(n - 1):
 if s[i] == s[i + 1]:
 dp[i][i + 1] = True
 start, max_len = i, 2
 
 # Check for length 3+
 for length in range(3, n + 1):
 for i in range(n - length + 1):
 j = i + length - 1
 if s[i] == s[j] and dp[i + 1][j - 1]:
 dp[i][j] = True
 if length > max_len:
 start, max_len = i, length
 
 return s[start:start + max_len]

# Example
s = "babad"
print(f"Longest Palindrome: {longestPalindrome(s)}") # "bab" ya "aba"
Palindrome DP Logic: dp[i][j] = True agar s[i] == s[j] AND dp[i+1][j-1] = True. Chhote palindromes se bade palindromes ban rahe hain — bottom-up approach.

Word Break Problem

String ko dictionary ke words mein break kar sakte ho? DP se check karo — har position pe "kya yahan tak break possible hai":

# Word Break — kya string ko words mein break kar sakte ho?
def wordBreak(s, wordDict):
 n = len(s)
 dp = [False] * (n + 1)
 dp[0] = True # Empty string always breakable
 
 for i in range(1, n + 1):
 for word in wordDict:
 if len(word) <= i and s[i - len(word):i] == word:
 if dp[i - len(word)]:
 dp[i] = True
 break
 
 return dp[n]

# Example
s = "leetcode"
wordDict = ["leet", "code"]
print(f"Word Break possible: {wordBreak(s, wordDict)}") # True

# DP Table:
# s = "leetcode"
# dp[0] = True (empty)
# dp[4] = True ("leet" mila, dp[0] True)
# dp[8] = True ("code" mila, dp[4] True)

Unique Paths in Grid

m x n grid mein top-left se bottom-right jaana hai — sirf right ya down ja sakte ho. Kitne unique paths hain?

# Unique Paths — m x n grid
def uniquePaths(m, n):
 dp = [[1] * n for _ in range(m)]
 for i in range(1, m):
 for j in range(1, n):
 dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
 return dp[m - 1][n - 1]

# Grid Visualization (3x3):
# 1 1 1
# 1 2 3
# 1 3 6
#
# dp[0][*] = 1 (sirf right ja sakte ho)
# dp[*][0] = 1 (sirf down ja sakte ho)
# dp[i][j] = upar se aao + baayan se aao

Grid DP Visualization

# Grid Path Finding — 4x5 grid
#
# Col: 0 1 2 3 4
# Row:
# 0 1 1 1 1 1
# 1 1 2 3 4 5
# 2 1 3 6 10 15
# 3 1 4 10 20 35
#
# Har cell = upar ka + baayan ka
# dp[i][j] = dp[i-1][j] + dp[i][j-1]
#
# Path example: (0,0) — (0,1) — (1,1) — (1,2) — (2,2) — (2,3) — (2,4)
# Right, Down, Right, Down, Right, Down = 6 steps total

Minimum Path Sum

Grid mein har cell ka cost hai — minimum cost path dhundho top-left se bottom-right:

# Minimum Path Sum
def minPathSum(grid):
 m, n = len(grid), len(grid[0])
 dp = [[0] * n for _ in range(m)]
 dp[0][0] = grid[0][0]
 
 # First row — sirf baayan se aa sakte ho
 for j in range(1, n):
 dp[0][j] = dp[0][j - 1] + grid[0][j]
 
 # First column — sirf upar se aa sakte ho
 for i in range(1, m):
 dp[i][0] = dp[i - 1][0] + grid[i][0]
 
 # Baaki cells — min(upar, baayan) + current cost
 for i in range(1, m):
 for j in range(1, n):
 dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]
 
 return dp[m - 1][n - 1]

# Example
grid = [
 [1, 3, 1],
 [1, 5, 1],
 [4, 2, 1]
]
print(f"Minimum Path Sum: {minPathSum(grid)}") # 7 (1?3?1?1?1)

Try it: code khud likho

Exercise

Question: 2x2 grid mein kitne unique paths hain top-left se bottom-right? Sirf number daalo.

Question: Word Break problem mein dp[i] kya represent karta hai? Ek line mein batao.

Common mistakes

Lesson complete?

Strings aur Grids pe DP samajh aa gaya? Ab top 10 DP problems dekhte hain jo interview mein sabse zyada aati hain — inko solve karna seekh lo!

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course