2020 05 10 華為機考機試題目兩題

2021-10-05 23:18:53 字數 2683 閱讀 7243

牛客網考試

攝像頭開啟

螢幕錄製

可使用自己的 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...