Day 26:2288. 价格减免

news2024/7/2 4:16:05

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);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1837194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】Multi-Camera Unified Pre-Training via 3D Scene Reconstruction

论文链接 代码链接 多摄像头三维感知已成为自动驾驶领域的一个重要研究领域&#xff0c;为基于激光雷达的解决方案提供了一种可行且具有成本效益的替代方案。具有成本效益的解决方案。现有的多摄像头算法主要依赖于单目 2D 预训练。然而&#xff0c;单目 2D 预训练忽略了多摄像…

API-操作元素内容

学习目标&#xff1a; 掌握操作元素内容 学习内容&#xff1a; 操作元素内容元素innerText属性元素innerHTML属性案例 操作元素内容&#xff1a; DOM对象都是根据标签生成的&#xff0c;所以操作标签&#xff0c;本质上就是操作DOM对象。就是操作对象使用的点语法。如果想要修…

python学习笔记-07

python内置函数 内置函数就是python自带的函数&#xff0c;不需要我们再去定义的&#xff0c;如print等直接使用即可&#xff0c;内置函数官方文档&#xff1a;官链。 1.数学运算 #数学运算&#xff1a; print(------abs()是绝对值函数------) a-1.1 print({}的绝对值是{}.fo…

高薪项目经理都在用的工具,你会几个?

甘特图、里程碑图、看版图、燃尽图、WBS、思维导图、流程图、鱼骨图、清单表、项目日历、关系矩阵、PERT图、决策树、状态表。这些工具&#xff0c;你会几个&#xff1f; 甘特图&#xff08;Gantt Chart&#xff09; 甘特图是一种条形图&#xff0c;用于展示项目任务的时间线&…

对SpringBoot入门案例的关键点

我们SpringBoot的入门案例中&#xff0c;即做了两个重要工作&#xff1a; 配置pom.xml文件写启动类 1.pom.xml依赖配置文件 ①帮助我们进行版本控制的父模块 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

泛微开发修炼之旅--20关于Ecology中如何查询正文文件的物理文件,并修改正文中的内容的解决方案

文章链接地址&#xff1a;20关于Ecology中如何查询正文文件的物理文件&#xff0c;并修改正文中的内容的解决方案

沃尔玛超市礼品卡有什么用?

最近端午节 有亲戚送了几张沃尔玛超市的卡做礼物过来 但是我们家附近的沃尔玛都好远&#xff0c;就算送货上门也不在配送范围内 由于种种原因导致这几张卡毫无用武之地&#xff0c;只能在家吃灰 最后多亏了收卡云&#xff0c;帮我解决了卡券闲置的问题&#xff0c;在收卡云上卖…

MySQL中的客户端选项(一)

mysql是一个简单的SQL shell&#xff0c;具有输入行编辑功能。它支持交互式和非交互式使用。交互使用时&#xff0c;查询结果以ASCII表格式显示。当非交互使用时&#xff08;例如&#xff0c;作为过滤器&#xff09;&#xff0c;结果以制表符分隔的格式显示。可以使用命令选项更…

Mybatis调用存储过程

在mysql数据库中创建一个存储过程 DELIMITER $$ CREATEPROCEDURE mybatisdemo1.pgetallusers(IN sid INT,IN eid INT)BEGINSELECT * FROM sb_users WHERE id>sid AND id<eid;END$$ DELIMITER ; 在Mapper接口里创建方法&#xff0c;和普通的查询数据方法没区别 在Mybati…

[Qt] Qt Creator 编码警告:warning:C4819

Qt项目使用VC&#xff08;2019 64bit&#xff09;编译器出现此错误。 warning&#xff1a;C4819&#xff1a;该文件包含不能在当前代码页&#xff08;936&#xff09;中表示的字符。请将该文件保存为Unicode格式以防止数据丢失。(可能这个警告内容也会在Qt Creator 中乱码) 如…

头歌资源库(10)拼数字

一、 问题描述 二、算法思想 初始化一个长度为10的数组count&#xff0c;用于记录卡片中每个数字的数量。 从1开始依次尝试拼出正整数&#xff0c;直到无法拼出下一个数为止。 对于每个尝试拼出的正整数&#xff0c;遍历其每一位的数字&#xff0c;检查该数字在count中是否还…

C#心跳机制客户端

窗体&#xff08;richTextBox右显示聊天&#xff09; 步骤 点击链接按钮 tcpclient客户端步骤 1创建客户端对象 2连接服务器connect 3创建网络基础流发消息 .write发消息 4 创建网络基础流接消息 .read接消息 5 断开连接…

【AI+多智能体框架】个人整理的几款AI多智能体框架

昨天无意间了解到 alipay开源 的多智能体框架agentUniverse &#xff0c;这里聊一下。现在这个信息社会&#xff0c;讲究多角色协同工作。人工智能时代&#xff0c;多智能体协同工作也是大势所趋&#xff0c;虽然现在框架或多或少还存在瑕疵。 但所有新技术都是在发展中逐步迭代…

04 DNS域名解析服务

1、DNS系统的作用及类型 在整个互联网大家庭中&#xff0c;大部分的网站、邮件等服务器都使用了域名形式的地址&#xff0c;如www.baidu.com、mail.163.com等。很显然这种地址形式要比使用61.233.189.147、202.108.33.74的IP地址形式更加直观&#xff0c;且更容易被用户记住。…

【学习】程序员资源网址

1 书栈网 简介&#xff1a;书栈网是程序员互联网IT开源编程书籍、资源免费阅读的网站&#xff0c;在书栈网你可以找到很多书籍、笔记资源。在这里&#xff0c;你可以根据热门收藏和阅读查看大家都在看什么&#xff0c;也可以根据技术栈分类找到对应模块的编程资源&#xff0c;…

一个按钮更改Notes字体大小

大家好&#xff0c;才是真的好。 在说到正文以前&#xff0c;我们还是提两句&#xff0c;上周HCL发布了Notes/Domino 12.0.2FP4补丁&#xff0c;以及在亚马逊云应用市场上架了HCL Domino 14.0。 现在谈谈正文部分。 随着岁月飞逝&#xff0c;使用Notes的人也开始日渐眼花&a…

[面试题]缓存

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis 什么是缓存&#xff1f;…

RFID分体式天线优势和特点介绍

RFID射频识别技术主要是利用无线电波来进行信息的传输&#xff0c;电波的产生和接收都需要通过天线来完成。当电子标签进入读写器天线工作区范围内&#xff0c;电子标签天线便产生足够的感应电流&#xff0c;从而获得能量被激活读写相关数据。对于RFID系统来说&#xff0c;天线…

经验分享:申请贷款的时候会被查大数据信用吗?

当我们考虑申请贷款时&#xff0c;往往会关注到背后的信用评估机制。这个过程中&#xff0c;大数据的使用日益成为一个关键因素。所谓大数据信用查询并不仅仅是传统的信用报告查询&#xff0c;它涵盖了更广泛的数据范围和更复杂的分析方法&#xff0c;以全面评估申请人的信用状…

以太坊 ERC20手机钱包推荐测评,一文读懂ERC20 bitget钱包

什么是以太坊 ERC20&#xff1f; 元描述&#xff1a;以太坊 ERC20 通证正在彻底改变以太坊区块链上的数字资产管理&#xff0c;尤其是在去中心化金融领域。在下文中了解更多信息。 什么是以太坊ERC20&#xff1f; 以太坊 ERC20&#xff08;web3.bitget.com/en/wiki/mother-of…