Solving Leetcode Interviews in Seconds with AI: Check if Numbers Are Ascending in a Sentence
Introduction
In this blog post, we will explore how to solve the LeetCode problem "2042" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.
Problem Statement
A sentence is a list of tokens separated by a single space with no leading or trailing spaces. Every token is either a positive number consisting of digits 0-9 with no leading zeros, or a word consisting of lowercase English letters. For example, "a puppy has 2 eyes 4 legs" is a sentence with seven tokens: "2" and "4" are numbers and the other tokens such as "puppy" are words. Given a string s representing a sentence, you need to check if all the numbers in s are strictly increasing from left to right (i.e., other than the last number, each number is strictly smaller than the number on its right in s). Return true if so, or false otherwise. Example 1: Input: s = "1 box has 3 blue 4 red 6 green and 12 yellow marbles" Output: true Explanation: The numbers in s are: 1, 3, 4, 6, 12. They are strictly increasing from left to right: 1 < 3 < 4 < 6 < 12. Example 2: Input: s = "hello world 5 x 5" Output: false Explanation: The numbers in s are: 5, 5. They are not strictly increasing. Example 3: Input: s = "sunset is at 7 51 pm overnight lows will be in the low 50 and 60 s" Output: false Explanation: The numbers in s are: 7, 51, 50, 60. They are not strictly increasing. Constraints: 3 <= s.length <= 200 s consists of lowercase English letters, spaces, and digits from 0 to 9, inclusive. The number of tokens in s is between 2 and 100, inclusive. The tokens in s are separated by a single space. There are at least two numbers in s. Each number in s is a positive number less than 100, with no leading zeros. s contains no leading or trailing spaces.
Explanation
- Split the sentence into tokens: Use the
split()method to separate the sentence into individual words and numbers.- Identify and compare numbers: Iterate through the tokens, and if a token is a number, convert it to an integer and compare it with the previously found number. If the current number is not strictly greater than the previous, return
False. - Handle the first number case: Initialize the previous number to a very small value (e.g., negative infinity) to ensure the first number is always greater.
- Identify and compare numbers: Iterate through the tokens, and if a token is a number, convert it to an integer and compare it with the previously found number. If the current number is not strictly greater than the previous, return
- Runtime Complexity: O(n), where n is the length of the string
s. - Storage Complexity: O(m), where m is the number of tokens in the string
sdue to the split operation.
Code
def areNumbersAscending(s: str) -> bool:
"""
Checks if all numbers in a sentence are strictly increasing.
Args:
s: The sentence string.
Returns:
True if the numbers are strictly increasing, False otherwise.
"""
tokens = s.split()
prev_num = float('-inf') # Initialize with negative infinity
for token in tokens:
if token.isdigit():
num = int(token)
if num <= prev_num:
return False
prev_num = num
return True