牛客真题编程——day18

编译环境:c++

1、表达式合法判断

描述:

写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)

可以看到一个合法的表达式,左括号和右括号必须相互对应。

给定一个表达式A,请返回一个bool值,代表它是否合法。

算法思想:

题目没有给出明确的描述,不考虑左右括号的顺序问题也能通过测试,所以只需要判断大中小左右括号的个数是否匹配即可,左括号自加1,右括号自减掉,如果最后计数为0,则合法。

代码部分实现:

2、删除重复字符

描述:

牛牛有一个由小写字母组成的字符串s,在s中可能有一些字母重复出现。比如在"banana"中,字母'a'和字母'n'分别出现了三次和两次。
但是牛牛不喜欢重复。对于同一个字母,他只想保留第一次出现并删除掉后面出现的字母。请帮助牛牛完成对s的操作。

算法思想:

运用字符转化的ascii码来进行每个字母出现的次数,当计数为0时,输出第一次出现的字符串元素即可。

3、炮台攻击

描述

兰博教训提莫之后,然后和提莫讨论起约德尔人,谈起约德尔人,自然少不了一个人,那 就是黑默丁格------约德尔人历史上最伟大的科学家. 提莫说,黑默丁格最近在思考一个问题:黑默丁格有三个炮台,炮台能攻击到距离它小于等于R的敌人 (两点之间的距离为两点之间的直线距离,例如(3,0),(0,4)之间的距离是5),如果一个炮台能攻击 到敌人,那么就会对敌人造成1×的伤害.黑默丁格将三个炮台放在N*M方格中的点上,并且给出敌人 的坐标. 问:那么敌人受到伤害会是多大?

算法思想:

题目有多组用例输入,对于每一次的用例输入,记录下对应的炮台和敌人的点坐标,分别计算两点间的距离与炮台的射程进行比较即可。

代码部分实现:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值