easy +10 pts

Camel case to snake case

Convert camelCase strings to snake_case with a single function.

Write a function `camel_to_snake(s: str) -> str` that converts a camelCase string to snake_case. The input contains only letters and digits, may start with a capital letter (PascalCase), and may include consecutive uppercase letters (acronyms) and digits. Rules: - Insert an underscore before each uppercase letter that is followed by a lowercase letter or digit (e.g., "FooBar" -> "foo_bar"). - Insert an underscore between a lowercase/digit and an uppercase letter (e.g., "fooBar" -> "foo_bar"). - For acronyms: insert an underscore before the last uppercase letter of a consecutive uppercase sequence if it is followed by a lowercase letter (e.g., "HTTPServer" -> "http_server"). - Digits are treated as lowercase-like: transitions between lowercase/digit and uppercase trigger underscores. - Convert all letters to lowercase. - The output should never start or end with an underscore. Examples: - `camel_to_snake("helloWorld")` → `"hello_world"` - `camel_to_snake("HelloWorld")` → `"hello_world"` - `camel_to_snake("HTTPServer")` → `"http_server"` - `camel_to_snake("foo2Bar")` → `"foo2_bar"`

Constraints

Input length: 1 ≤ len(s) ≤ 1000. Input contains only ASCII letters (A-Z, a-z) and digits. The function must handle large inputs efficiently (O(n) time, O(n) space).

Example

>>> camel_to_snake("helloWorld")
'hello_world'
>>> camel_to_snake("HelloWorld")
'hello_world'
>>> camel_to_snake("HTTPServer")
'http_server'
>>> camel_to_snake("foo2Bar")
'foo2_bar'
10 points ~15 min

Recent Submissions

No submissions yet — hit Run Tests to try!

Hints

Iterate through characters and check transitions between lowercase/digit and uppercase.
Track when a sequence of uppercase letters ends before a lowercase letter to insert an extra underscore.
Consider how acronyms like 'HTTPServer' should become 'http_server' not 'h_t_t_p_server'.
Python 3
All tests passed!
Test Results
Press Ctrl+Enter or click Run Tests to execute your code.