LC每日一题|20240618 - 2288. 价格减免
句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号
'$'。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个 价格 。
- 例如
"$100"、"$23"和"$6"表示价格,而"100"、"$"和"$1e5不是。给你一个字符串
sentence表示一个句子和一个整数discount。对于每个表示价格的单词,都在价格的基础上减免discount%,并 更新 该单词到句子中。所有更新后的价格应该表示为一个 恰好保留小数点后两位 的数字。返回表示修改后句子的字符串。
注意:所有价格 最多 为
10位数字。
提示:
1 <= sentence.length <= 105sentence由小写英文字母、数字、' '和'$'组成sentence不含前导和尾随空格sentence的所有单词都用单个空格分隔- 所有价格都是 正 整数且不含前导零
- 所有价格 最多 为
10位数字 0 <= discount <= 100
题目等级:Medium
解题思路
模拟或正则。
AC代码
class Solution {
fun discountPrices(sentence: String, discount: Int): String {
val words = sentence.split(" ").toMutableList()
for (i in words.indices) {
if (words[i].startsWith("$")) {
try {
val x = words[i].substring(1, words[i].length).toLong()
words[i] = "$" + String.format("%.2f", x * (100.0 - discount) / 100)
} catch (_: Exception) {}
}
}
return words.joinToString(" ")
}
}