牛客網考試
攝像頭開啟
螢幕錄製
可使用自己的 ide
(add 3 5 7) 結果為 15
(sub 1 9) 結果為 -8
(mul 0 9) 結果為 0
(div 8 3) 結果為 2
(div 8 0) 結果為 error
(add (sub (div 8 2) (mul 1 9)) 20) 結果為 15
使用 stack。
class stack(object):
def __init__(self):
self.stack =
def top(self):
return self.stack[-1]
def pop(self):
return self.stack.pop()
def push(self, value):
def is_empty(self):
return len(self.stack) == 0
def parse(expression):
mix_tokens = expression.split()
tokens =
for mix_token in mix_tokens:
mixer = ''
for char in mix_token:
if char == '(' or char == ')':
if mixer != '':
mixer = ''
else:
mixer += char
if mixer != '':
return tokens
def calculate(tokens):
stack = stack()
for token in tokens:
if token == ')':
# 遇到右括號
ans = none
opt = none
nums =
while not stack.is_empty():
top = stack.pop()
if top == 'add' or top == 'sub' or top == 'mul' or top == 'div':
# 計算符號
opt = top
elif top == '(':
# 開始計算
nums.reverse()
for num in nums:
if ans is none:
ans = num
else:
if opt == 'add':
ans += num
elif opt == 'sub':
ans -= num
elif opt == 'mul':
ans *= num
elif opt == 'div':
if num == 0:
return 'error'
ans //= num
break
else:
# 其他數字
# 計算結果重新入棧
stack.push(ans)
else:
# 非右括號
stack.push(token)
return stack.top()
try:
while true:
expression = input()
print(calculate(parse(expression)))
except:
pass
abcdeabcdea 結果為 a 2
abcdeabcdea 結果為 a 2
abcdeabcde 結果為 a 1
abcdeabcdea true 結果為 a 2
abcdeabcdea true 結果為 a 2
abcdeabcde true 結果為 a 1
abcdeabcdea false 結果為 a 3
abcdeabcdea false 結果為 a 3
abcdeabcde false 結果為 a 2
使用 dict、sorted。
try:
while true:
string = input()
opt = 'true'
if ' ' in string:
string, opt = string.split()
if opt == 'false':
string = string.lower()
times = {}
for char in string:
if char in times:
times[char] += 1
else:
times[char] = 1
maxk = -1
maxv = -1
for k in sorted(times.keys(), reverse=true):
if maxv <= times[k]:
maxk = k
maxv = times[k]
print(maxk, maxv)
except:
pass
華為機考筆試題 刪數
有乙個陣列a n 順序存放0 n 1,要求每隔兩個數刪掉乙個數,到末尾時迴圈至開頭繼續進行,求最後乙個被刪掉的數的原始下標位置。以8個數 n 7 為例 0,1,2,3,4,5,6,7 0 1 2 刪除 3 4 5 刪除 6 7 0 刪除 如此迴圈直到最後乙個數被刪除。輸入描述 每組資料為一行乙個整數...
華為機試題
今天去華為機試,感覺是再謹慎都不為過啊!zc前一天晚上還跟我強調了判空,記憶體釋放。前兩題都是基本題,後面一題不會。1 輸入兩個數 反轉相加的和輸出。2 三天打漁兩天曬網 從1990 年1月1日開始 打漁輸出fishing 曬網輸出sleeping 我因為printf的是fishing sleepi...
華為機試題
通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2.壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...