Solving Leetcode Interviews in Seconds with AI: Apply Discount to Prices
Introduction
In this blog post, we will explore how to solve the LeetCode problem "2288" 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 string of single-space separated words where each word can contain digits, lowercase letters, and the dollar sign '$'. A word represents a price if it is a sequence of digits preceded by a dollar sign. For example, "$100", "$23", and "$6" represent prices while "100", "$", and "$1e5" do not. You are given a string sentence representing a sentence and an integer discount. For each word representing a price, apply a discount of discount% on the price and update the word in the sentence. All updated prices should be represented with exactly two decimal places. Return a string representing the modified sentence. Note that all prices will contain at most 10 digits. Example 1: Input: sentence = "there are $1 $2 and 5$ candies in the shop", discount = 50 Output: "there are $0.50 $1.00 and 5$ candies in the shop" Explanation: The words which represent prices are "$1" and "$2". - A 50% discount on "$1" yields "$0.50", so "$1" is replaced by "$0.50". - A 50% discount on "$2" yields "$1". Since we need to have exactly 2 decimal places after a price, we replace "$2" with "$1.00". Example 2: Input: sentence = "1 2 $3 4 $5 $6 7 8$ $9 $10$", discount = 100 Output: "1 2 $0.00 4 $0.00 $0.00 7 8$ $0.00 $10$" Explanation: Applying a 100% discount on any price will result in 0. The words representing prices are "$3", "$5", "$6", and "$9". Each of them is replaced by "$0.00". Constraints: 1 <= sentence.length <= 105 sentence consists of lowercase English letters, digits, ' ', and '$'. sentence does not have leading or trailing spaces. All words in sentence are separated by a single space. All prices will be positive numbers without leading zeros. All prices will have at most 10 digits. 0 <= discount <= 100
Explanation
Here's the breakdown of the approach, complexity, and the Python code:
Approach:
- Split the sentence into words.
- Iterate through the words, check if each word represents a price.
- If a word is a price, calculate the discounted price and format it to two decimal places.
Complexity:
- Runtime Complexity: O(n), where n is the length of the sentence.
- Storage Complexity: O(n), where n is the length of the sentence (due to the split operation).
Code
def discountPrices(sentence: str, discount: int) -> str:
words = sentence.split()
result = []
for word in words:
if word.startswith('$') and word[1:].isdigit():
try:
price = int(word[1:])
discounted_price = price * (100 - discount) / 100
result.append("${:.2f}".format(discounted_price))
except ValueError:
result.append(word) # Handle cases like "$1e5"
else:
result.append(word)
return " ".join(result)