牛客刷题偶遇 字节后端笔试0715 撸它
一共两道编程题。
1、 给定一个合法的计算表达式,该表达式只包括
0 1 2…9 + - ( )
这些字符,求判断内部不包含减号的括号对数;
例子如下:
(1+(2+1)+(3+4)-5)
该计算表达式不包含减号的括号对数为2对;
思路:
利用栈先进后出的特点,除了有括号全部进栈,与右括号开始出栈,遇到减号当前一组括号不计数,但是为了后面计算方便,需要中间的字符都出栈直至遇到左括号。
执行顺序:
(1+(2+1)+(3+4)-5)
(1++(3+4)-5)
(1++-5)
代码如下:
data = input()
# 定义 左侧为栈底 右侧为栈顶
stack = []
count = 0
for cad in data:
if cad == ")":
flag = True
while 1:
try:
temp = stack.pop()
except:
break
if temp == "(":
if flag:
count += 1
break
elif "0" <= temp <= "9" or temp == "+":
pass
else:
flag = False
else:
stack.append(cad)
print(count)
2、 给定若干行字符串,每一行代表一个访问记录,每个记录包含三个字段:用户id, 网址,访问时长;
保证每个用户对于某个网站的访问记录只有一条,求被访问总时长大于180分钟且访问人数最多的网站;
输入举例:
12345 www.a.com 150
12346 www.a.com 150
12345 www.b.com 150
该输入的输出为:
www.a.com
思路:
这题更简单一点,分割字符串然后利用字典计数
代码如下:
url_dic = {}
while 1:
try:
data = input()
user_id, url, count = data.split()
url_dic[url] = url_dic.get(url, 0) + int(count)
except:
break
for url, count in url_dic.items():
if count > 180:
print(url)
若是对你有帮助,点个赞呗!!
加入我们,,软件测试交流,,。群。。642830685,领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!一起交流学习进步