AlgoLounge

Apply Discount to Prices

medium

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.

Examples

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"

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 $10Constraintsquot;, discount = 100
Output: "1 2 $0.00 4 $0.00 $0.00 7 8$ $0.00 $10Constraintsquot;

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 <= 10⁵
  • 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
TypeScript
Loading editor…
List of test cases (10)
Case 1
sentence = "there are $1 $2 and 5$ candies in the shop"
discount = 50
Case 2
sentence = "1 2 $3 4 $5 $6 7 8$ $9 $10$"
discount = 100
Case 3
sentence = "$100"
discount = 0
Case 4
sentence = "$100"
discount = 100
Case 5
sentence = "buy $10 get one free"
discount = 25
Case 6
sentence = "$1 $2 $3 $4"
discount = 10
Case 7
sentence = "no prices here"
discount = 50
Case 8
sentence = "$abc $123abc $0 $99999"
discount = 33
Case 9
sentence = "$1000000000 huge $1"
discount = 75
Case 10
sentence = "mix $5 and words $50 done"
discount = 20