Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Apply Discount to Prices

Updated
3 min read

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)

More from this blog

C

Chatmagic blog

2894 posts