---
51. How do you reverse a string?
s = "hello"52. How do you check if a string is a palindrome?
# Method 1: Slicing
reversed_s = s[::-1] # "olleh"
# Method 2: Two Pointers (In-place logic)
chars = list(s)
left, right = 0, len(chars) - 1
while left < right:
chars[left], chars[right] = chars[right], chars[left]
left += 1
right -= 1
reversed_s = ''.join(chars)
def is_palindrome(s):53. How do you find duplicates in an array?
# Clean string: lowercase and remove spaces
s = s.lower().replace(" ", "")
# Method 1: Slicing
return s == s[::-1]
# Method 2: Two Pointers
left, right = 0, len(s) - 1
while left < right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True
arr = [1, 2, 2, 3]54. How do you find the missing number in a range from 1 to n?
seen = set()
dups = set()
for num in arr:
if num in seen:
dups.add(num)
seen.add(num)
print(list(dups)) # Output: [2]
arr = [1, 2, 4] # Missing 355. How do you merge two sorted arrays?
n = len(arr) + 1 # Should be 4 elements total
expected_sum = n * (n + 1) // 2
actual_sum = sum(arr)
missing_number = expected_sum - actual_sum # 3
arr1, arr2 = [1, 3], [2, 4]56. How do you find the nth Fibonacci number?
i, j = 0, 0
result = []
while i < len(arr1) and j < len(arr2):
if arr1[i] < arr2[j]:
result.append(arr1[i])
i += 1
else:
result.append(arr2[j])
j += 1
# Append remaining elements
result.extend(arr1[i:])
result.extend(arr2[j:])
def fib(n):57. How do you compute factorial? (Recursion vs Memoization)
if n <= 1:
return n
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b
print(fib(6)) # Output: 8
# Simple Recursion58. How do you remove duplicates from a sorted array in-place?
def fact(n):
if n <= 1: return 1
return n * fact(n - 1)
# Recursive with Memoization (Optimization)
memo = {}
def fact_memo(n):
if n in memo: return memo[n]
if n <= 1: return 1
memo[n] = n * fact_memo(n - 1)
return memo[n]
print(fact(5)) # Output: 120
arr = [1, 1, 2, 2, 3]59. How do you solve the Two Sum problem?
if not arr: return 0
slow = 0
for fast in range(1, len(arr)):
if arr[fast] != arr[slow]:
slow += 1
arr[slow] = arr[fast]
# Resulting array up to 'slow + 1' index
print(arr[:slow + 1]) # Output: [1, 2, 3]
nums, target = [2, 7, 11, 15], 960. Interview tip you must remember
mapping = {}
for i, num in enumerate(nums):
complement = target - num
if complement in mapping:
print([mapping[complement], i]) # Output: [0, 1]
mapping[num] = i
- Code Cleanly: Use meaningful variable names (e.g.,
current_sum instead of s).- Test Immediately: Verbally walk through your code with a small test case before the interviewer asks you to.
- Discuss Optimization: Always mention Time and Space Complexity. Say: *"This is O(n) time and O(n) space. We could optimize space by..."*
---
Double Tap ❤️ For Part 7