這是本人真實經歷過的華爲的機考題,一共兩道,要求90分鐘內答完。其中第一道沒問題,100%經過率,第二道是80%經過率,找了大半個多小時,也沒找出問題所在來,無奈放棄。你們能夠幫忙看下問題在哪,能夠直接在文章下方直接評論。
題目描述:給定兩個字符串a b,注意:其中a字符串中有空格。求b字符串在a字符串中出現的次數。例:python
輸入:a="abc cc d",b="cc"。數組
輸出:b在a中出現次數爲:2次
code
這個題很簡單,把a中空格去掉,而後再拿b中字符到a中一一進行比對。中間可以使用一變量flag,若是出現不一致狀況,flag就置爲False。若是全程一致,即判斷結束後flag依然爲True,那麼就記+1,繼續判斷。orm
注意特殊狀況的處理:好比b字符串比a字符串要長的狀況,還有b字符串比a字符串剩餘要比對的字符串長的狀況。我當時寫的代碼以下:字符串
# 外層套一個while,目的是爲了適應多組輸入 while True: try: a = input().split() b = input() a = "".join(a) res = 0 la = len(a) lb = len(b) # 若是輸入的b字符串比a字符串還長,就直接break if lb > la: break # 注意b字符串的末尾對齊a字符串的末尾 for i in range(la-lb+1): flag = True # 逐個判斷,若是中途遇到不相等的狀況,就跳出內層循環 for j in range(lb): if a[i+j] != b[j]: flag = False break if flag: res += 1 print(res) except Exception as e: break
題目描述:這個原題目描述很長啊,我這裏簡單歸納一下。就是主辦方要在12:00-20:00之間要舉辦舞會,要求在門口處統計來賓的到達時間與預計離開時間,由於舞會最大隻能容納100人(注意這裏,我代碼只經過80%樣例可能就是由於這裏100人沒處理好)。好比統計格式爲:12:00-14:00,意思是這我的是12:00-13:00之間來的,預計13:00-14:00之間會離開。看樣例(遇到-1時結束輸入):input
輸入: (13,15)
(13,14)
(14,16)
(14,20)
-1it
輸出: 12:00-13:00 0
13:00-14:00 2
14:00-15:00 3
15:00-16:00 2
16:00-17:00 1
17:00-18:00 1
18:00-19:00 1
19:00-20:00 1
個人想法是:先用一個列表將這些輸入存起來,而後再構建一個列表用來存儲結果,最後格式化輸出一會兒。io
我寫的代碼以下,你們能夠幫我挑挑毛病:form
while True: try: # 構建一個結果數組 res = [0 for i in range(8)] while True: num = input() if num == "-1": break num1,num2 = num.split(",") low = int(num1)-12 high = int(num2)-12 # 這裏寫得很差,總感受不對。 if max(res) == 100: break for i in range(low, high): res[i] += 1 x = len(res) # 格式化輸出 for j in range(x): print("{0}:00-{1}:00 {2}".format(j+12,j+13, res[j])) except Exception as e: print(e) break