Day 26:2288. 价格减免

2024-06-18 21:52
文章标签 day 26 2288 减免 价格

本文主要是介绍Day 26:2288. 价格减免,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Leetcode 2288. 价格减免

句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 ‘$’ 。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个 价格

  • 例如 “$100”、“$23” 和 “ 6 " 表示价格,而 " 100 " 、 " 6" 表示价格,而 "100"、" 6"表示价格,而"100""” 和 "$1e5 不是。

给你一个字符串 sentence 表示一个句子和一个整数 discount 。对于每个表示价格的单词,都在价格的基础上减免 discount% ,并 更新 该单词到句子中。所有更新后的价格应该表示为一个 恰好保留小数点后两位 的数字。

返回表示修改后句子的字符串。

注意:所有价格 最多 为 10 位数字。

image.png

题目非常简单,就是把句子中表示价格的进行打折输出。但是有几个坑。

  1. 价格表示,字符串第一个字符为 '$' 的,在进行判断且后面不能出现除 数字 和 '.' 之外的字符,这里没有问题,但是
    "$.10""$10."也是不合法的。
  2. 精度丢失:将价格乘 100 进行处理,就是整个过程的结果的都是整数,最后再转化输出,使用String.format("%d.%02d", price / 100, price % 100),其中%02d表示长度为 2,不足用 0 填充。
  3. 值得范围:值原始值是字符串,且题目中标注价格最多为 10 位数字,int的最大值 2147483647,刚好也是 10 位,但是用 int会超出范围哦,可能数字全是 9。

完整代码

class Solution {public String discountPrices(String sentence, int discount) {String[] ss = sentence.split(" ");StringBuilder builder = new StringBuilder();int n = ss.length;for (int i = 0; i < n; i++) {if (i != 0) builder.append(" ");if (ss[i].charAt(0) == '$' && ss[i].length() > 1) {builder.append(getPrice(ss[i], discount));} else {builder.append(ss[i]);}}return String.valueOf(builder);}public String getPrice(String s, int discount) {int len = s.length();long price = 0;for (int i = 1; i < len; i++) {char c = s.charAt(i);if (c <= '9' && c >= '0') {price = price * 10 + c - '0';} else if (c == '.') {if (i == 1 || i == len - 1) return s;} else {return s;}}price = price * (100 - discount);return String.format("$%d.%02d", price / 100,  price % 100);}
}

这篇关于Day 26:2288. 价格减免的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073155

相关文章

随想录 Day 69 并查集 107. 寻找存在的路径

随想录 Day 69 并查集 107. 寻找存在的路径 理论基础 int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好vector<int> father = vector<int> (n, 0); // C++里的一种数组结构// 并查集初始化void init() {for (int i = 0; i < n; ++i) {father[i] = i;}

价格减免(Lc2288)——模拟

句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 '$' 。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个 价格 。 例如 "$100"、"$23" 和 "$6" 表示价格,而 "100"、"$" 和 "$1e5 不是。 给你一个字符串 sentence 表示一个句子和一个整数 discount 。对于每个表示价格的单

Codeforces April Fools Day Contest 2014(附官方题解)

Codeforces2014年愚人节的坑题。。。但还是感觉挺好玩的。。。 A. The Great Game time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Two teams mee

Codeforces April Fools Day Contest 2013

2013年愚人节的坑题。。。 A. Mysterious strings time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Input The input contains a sin

什么是慢查询——Java全栈知识(26)

1、什么是慢查询 慢查询:也就是接口压测响应时间过长,页面加载时间过长的查询 原因可能如下: 1、聚合查询 2、多表查询 3、单表数据量过大 4、深度分页查询(limit) 如何定位慢查询? 1、Skywalking 我们可以通过 Skywalking 来看到是哪个请求的哪个查询的时间执行时间过长。 2、Mysql 自带的慢日志查询 慢查询日志记录了所有执行时间超过指定参数(long

随想录 Day 66 101. 孤岛的总面积 102. 沉没孤岛 103. 水流问题

随想录 Day 66 101. 孤岛的总面积 102. 沉没孤岛 103. 水流问题 101. 孤岛的总面积 101. 孤岛的总面积 时间限制:1.000S 空间限制:256MB 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。 现在你需要计算所有孤

Day 31:100334. 包含所有1的最小矩形面积Ⅰ

Leetcode 100334. 包含所有1的最小矩形面积Ⅰ 给你一个二维 **二进制 **数组 grid。请你找出一个边在水平方向和竖直方向上、面积 最小 的矩形,并且满足 grid 中所有的 1 都在矩形的内部。 返回这个矩形可能的 **最小 **面积。 确定首次出现 1 的第一行 top,最后一次出现 1 的最后一列 r,最后一次出现 1 的最后一行 bottom,首次出现的第

[Day 19] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈的數據透明性 區塊鏈技術作為一種分布式賬本技術,因其去中心化、不可篡改和高度透明的特性,已經在各行各業中得到了廣泛應用。在本文中,我們將深入探討區塊鏈的數據透明性,包括其原理、實現方法及相關代碼示例,並詳細解釋每段代碼的作用。 1. 區塊鏈數據透明性的原理 區塊鏈技術的核心是去中心化的分布式賬本,這意味著每個區塊中的數據都是公開的,並且可以由任何節點查看和驗證。這種透明性主要來源於以下

【Rust日报】 2019-03-26

Sonic 这是一个牛逼的库,故而再发一次。很多人说过,Rust 在大数据领域其实是一个很有潜力的竞争者,但是在被 Java/C++ 垄断的领域,后来者 Rust 如何能在已经非常成熟的这个领地抢占吞噬一块自己的根据地。只能靠两点了: 高性能。同等数据量的情况下,速度提高一倍到数十倍;低内存占用。同等数据量的情况下,内存占用少数十倍。 而 Sonic 就是这样一个可以逐渐替换 Elasticse

【Rust日报】 2019-05-26:切片索引检查导致的3倍性能下降问题一例

漫游 Tox-rs,第一部分 长文预警。Tox 是一个分布式的P2P,加密传输,易于使用的基于DHT的网络。 Tox 原来是个C项目,作者用Rust通过审视发现,实现里面有不少漏洞,易被攻击。所以他用Rust重写了它。就是上面那个项目地址。现在作者,开始整理这几年的工作,开始生成文档。 Read More 切片索引检查导致的3倍性能下降问题一例 作者发现下面这两片代码: pub fn