You have 20–25 minutes per problem. Implement the following two functions and be prepared to explain your approach and time/space complexity.
Problem 1 — Palindrome Check
Write a function that determines whether a given string is a palindrome.
-
A string is a palindrome if it reads the same forward and backward.
-
Compare characters
exactly as they appear
(no case folding and no ignoring punctuation/whitespace unless you explicitly state and implement it).
Function signature (example):
-
bool is_palindrome(s: str)
Input:
-
s
: a string (may be empty)
Output:
-
true
if
s
is a palindrome, otherwise
false
Examples:
-
"abba" -> true
-
"abc" -> false
-
"" -> true
Problem 2 — Valid Parentheses Sequence
Write a function that checks whether a string containing only parentheses characters is valid.
A string is valid if:
-
Every opening bracket has a corresponding closing bracket of the same type.
-
Brackets close in the correct order.
Assume the allowed bracket types are: (), [], {}.
Function signature (example):
-
bool is_valid_parentheses(s: str)
Input:
-
s
: a string consisting only of characters in
()[]{}
(may be empty)
Output:
-
true
if
s
is valid, otherwise
false
Examples:
-
"()" -> true
-
"([]){}" -> true
-
"(]" -> false
-
"([)]" -> false
-
"" -> true
Documentation requirement
For each function, include a docstring with:
-
Description
-
Inputs/Outputs
-
Callouts
(assumptions, edge cases, complexity)