1. 程式人生 > 實用技巧 >【位元組跳動面試題】 擼它

【位元組跳動面試題】 擼它

牛客刷題偶遇 位元組後端筆試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自動化、介面、框架搭建學習資料!一起交流學習進步