首页 > 其他分享 >价格减免(Lc2288)——模拟

价格减免(Lc2288)——模拟

时间:2024-06-23 16:59:27浏览次数:26  
标签:减免 word sentence return 单词 discount Lc2288 100 模拟

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

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

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

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

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

示例 1:

输入:sentence = "there are $1 $2 and 5$ candies in the shop", discount = 50
输出:"there are $0.50 $1.00 and 5$ candies in the shop"
解释:
表示价格的单词是 "$1" 和 "$2" 。 
- "$1" 减免 50% 为 "$0.50" ,所以 "$1" 替换为 "$0.50" 。
- "$2" 减免 50% 为 "$1" ,所以 "$2" 替换为 "$1.00" 。

示例 2:

输入:sentence = "1 2 $3 4 $5 $6 7 8$ $9 $10$", discount = 100
输出:"1 2 $0.00 4 $0.00 $0.00 7 8$ $0.00 $10$"
解释:
任何价格减免 100% 都会得到 0 。
表示价格的单词分别是 "$3"、"$5"、"$6" 和 "$9"。
每个单词都替换为 "$0.00"。

提示:

  • 1 <= sentence.length <= 105
  • sentence 由小写英文字母、数字、' ' 和 '$' 组成
  • sentence 不含前导和尾随空格
  • sentence 的所有单词都用单个空格分隔
  • 所有价格都是  整数且不含前导零
  • 所有价格 最多 为  10 位数字
  • 0 <= discount <= 100

问题简要描述:返回修改后句子的字符串 

Java

class Solution {
    public String discountPrices(String sentence, int discount) {
        String[] word = sentence.split(" ");
        for (int i = 0; i < word.length; i++) {
            if (check(word[i])) {
                double t = Long.parseLong(word[i].substring(1)) * (1 - discount / 100.0);
                word[i] = String.format("$%.2f", t);
            }
        }
        return String.join(" ", word);
    }

    boolean check(String word) {
        if (word.charAt(0) != '$' || word.length() == 1) {
            return false;
        }
        for (int i = 1; i < word.length(); i++) {
            if (!Character.isDigit(word.charAt(i))) {
                return false;
            }
        }
        return true;
    }
}

 Python3

class Solution:
    def discountPrices(self, sentence: str, discount: int) -> str:
        ans = []
        for w in sentence.split(" "):
            if w[0] == '$' and w[1:].isdigit():
                w = f'${int(w[1:]) * (1 - discount / 100):.2f}'
            ans.append(w)
        return ' '.join(ans)    

TypeScript

function discountPrices(sentence: string, discount: number): string {
    let ans = []
    const isDigit = (word: string) => {
        return /^\d+$/.test(word);
    }
    for (let word of sentence.split(" ")) {
        if (word[0] == '$' && isDigit(word.substring(1))) {
            let price = parseInt(word.substring(1)) * (1 - discount / 100);
            word = `$${price.toFixed(2)}`;
        }
        ans.push(word);
    }
    return ans.join(" ");
};

Go

func discountPrices(sentence string, discount int) string {
	words := strings.Split(sentence, " ")
	for i, w := range words {
		if w[0] == '$' {
			if v, err := strconv.Atoi(w[1:]); err == nil {
				words[i] = fmt.Sprintf("$%.2f", float64(v*(100-discount))/100)
			}
		}
	}
	return strings.Join(words, " ")
}

标签:减免,word,sentence,return,单词,discount,Lc2288,100,模拟
From: https://blog.csdn.net/qq_51626500/article/details/139902619

相关文章

  • 模拟集成电路设计系列博客——7.3.1 并联比较型ADC基本介绍
    7.3.1并联比较型ADC基本介绍并联比较型ADC(后续都称作FlashADC)是实现超高速转换器的标准方式。FlashADC的输入信号被并行的馈入\(2^N\)个比较器中,如下图所示:每个比较器被连接到电阻串的节点上。任何连接到电阻串节点的比较器,如果\(V_{ri}\)大于\(V_{in}\)有着1的输出,而\(V_{r......
  • 简单讲一下Mobile Aloha模拟环境代码
    MobileAloha模拟环境有两部分代码:1. https://github.com/tonyzhaozh/act  ---里面有ACT论文的链接2. https://github.com/MarkFzp/act-plus-plus  ---这个是我们要介绍的代码ACT算法全称是 ActionChunkingwithTransformers,大体意思是:用机械臂的n个帧的视频......
  • JAVA【案例5-2】模拟默认密码自动生成
    【模拟默认密码自动生成】1、案例描述本案例要求编写一个程序,模拟默认密码的自动生成策略,手动输入用户名,根据用户名自动生成默认密码。在生成密码时,将用户名反转即为默认的密码。2、案例目的(1)学会分析“模拟默认密码的生成”案例的实现思路(2)根据思路完成“模拟默认密码的......
  • C++入门 vector深度剖析及模拟实现
    目录vector析构函数模拟实现vector赋值拷贝模拟实现vector拷贝构造模拟实现vector构造函数模拟实现类模板的成员函数n个val构造单参数和多参数对象隐式类型转换使用memcpy拷贝问题在上两篇有关vector的模拟实现中,还有构造,拷贝构造,赋值拷贝以及析构函数没有实现,本篇主......
  • 模拟退火算法(Simulated Annealing, SA)及微优化(入门)
    模拟退火算法(SimulatedAnnealing,SA)是一种启发式搜索算法,常用于解决优化问题。该算法以概率的方式搜索问题的解空间,并在搜索过程中逐渐降低温度,从而有助于找到全局最优解。模拟退火算法的基本原理如下:初始化:随机生成一个初始解。迭代过程:生成一个新解,这个新解通过一......
  • YC307A [ 20240622 CQYC省选模拟赛 T1 ] 划船(boat)
    题意给定一个有向图\(G\),以及将所有边反向重连的无向图\(T\)。你最多可以在\(T\)上连续走\(k\)条边,走过每条边的代价都为\(1\),然后必须在\(G\)的对应点上走一条边以恢复体力。若当前对应点没有出边,则停留在该点\(1\)代价。求每个点到\(n\)的最小代价。Sol考......
  • NOIP2024模拟赛13:拆开未来
    NOIP2024模拟赛13:拆开未来C-重复一句话题意:给定字符串\(S\),问\(S\)的所有子串共有多少种“好的拆分方案”。对于一个字符串\(S\),一个划分是好的当且仅当能把\(S\)划分成6个非空子串\(a,b,c,d,e\),满足\(a=b=e,\c=f\)(一个字符串可能有多种划分方式)标签:......
  • [本科项目实训] 行动模拟实现 与 FastAPI 对应交互-V0
    to2024/06/01行动模拟该项目拟通过大语言模型分析拆解人类描述的任务,自动的调用行动库进行执行并完成内容的汇报。因而需要针对任务对大模型进行微调(比如本项目使用的p-tuningv2),行动模拟即针对微调结果将大模型与行动库进行对接,模拟实际场景下的函数输入输出。第一步,即加......
  • HC32L130/HC32L136开发之软件模拟IIC驱动AT24C64
    一、AT24C64电路图二、程序编码1.定义I2C总线连接的GPIO端口/*定义I2C总线连接的GPIO端口,用户只需要修改下面4行代码即可任意改变SCL和SDA的引脚*/#defineRCC_I2C_PORT   SysctrlPeripheralGpio      /*GPIO端口时钟*/#definePORT_I2C_SCL  ......
  • STM32互补PWM模拟(带有Dead Time)
    目录前言一、时基单元基本概念二、时基单元CNT计数模式三、互补PWM模拟1.中央对其计数模式2.引脚模式选择3.输出结果总结前言本文介绍了互补PWM的概念,并且能够使用通用定时器和高级定时器模拟出互补PWM的波形,并且能够调控输出波形占空比和死区时间(DeadTime)。一......