進棧出棧問題
有三個元素,ABC進棧,那么以下哪一種不可能是出棧順序呢
ABC
ACB
BCA
BAC
CBA
CAB
CAB不可能是出棧順序。 如果C先出棧,那么AB必然都在棧內,那么就不可能A先出,B再出。
補充點:卡特蘭數
括號匹配問題
給一個字符串,里面有大括號,中括號,小括號,怎么知道這個字符串是否匹配。
#括號匹配問題
def brace_match(s):
stack = []
d = {
'(':')',
'{':'}',
'[':']'
}
for ch in s:
if ch in d.keys():
stack.append(ch)
elif len(stack) == 0:
print('多了右括號%s'%ch)
return False
elif d[stack[-1]] == ch:
stack.pop()
else:
print('括號%s處不匹配' % ch)
return False
if len(stack) == 0:
return True
else:
return False
s = "([])()"
print(brace_match(s))
位和字節的關系?
位:一個二進制數據0或1,是計算機傳輸的最小單元.8位組成一個字節.
字節:存儲空間的計量單元,1個字節有8個bit.而1024個字節又代表1K.
b、B、KB、MB、GB 的關系?
b就是bit,也叫比特位,是計算機表示數據最小的單位
1B=8bit ,B就是字節
1KB=1024B ,KB就是千字節
1MB=1024KB ,MB就是兆字節
1GB=1024MB ,GB就是吉字節
請至少列舉5個 PEP8 規范(越多越好)。
1.縮進
①每一級縮進四個空格
②續行應該與其包裹元素同級
2.字符長度
①所有行限制在79個長度以內
②注釋塊限制在72個長度以內
3.空行
①頂層函數和類的定義,前后用兩個空行隔開。
②類里的方法定義用一個空行隔開。
4.導入文件
①導入應該分行導入
②導入總在文件頂部,在文檔注釋后,全局變量與常量前。
③庫的導入應該分一下幾組順序導入
- 標準庫導入
- 相關第三方庫導入
- 本地應用/庫特定導入
④使用絕對路徑導入
5.注釋
①行注釋
與代碼相矛盾的注釋比沒有注釋還糟,當代碼更改時,優先更新對應的注釋!
注釋應該是完整的句子。如果一個注釋是一個短語或句子,它的第一個單詞應該大寫,除非它是以小寫字母開頭的標識符(永遠不要改變標識符的大小寫!)。
如果注釋很短,結尾的句號可以省略。塊注釋一般由完整句子的一個或多個段落組成,并且每句話結束有個句號。
在句尾結束的時候應該使用兩個空格。
當用英文書寫時,遵循Strunk and White (譯注:《Strunk and White, The Elements of Style》)的書寫風格。
在非英語國家的Python程序員,請使用英文寫注釋,除非你120%的確信你的代碼不會被使用其他語言的人閱讀。
②塊注釋
塊注釋通常適用于跟隨它們的某些(或全部)代碼,并縮進到與代碼相同的級別。塊注釋的每一行開頭使用一個#和一個空格(除非塊注釋內部縮進文本)。
塊注釋內部的段落通過只有一個#的空行分隔。
③行內注釋
有節制地使用行內注釋。
行內注釋是與代碼語句同行的注釋。行內注釋和代碼至少要有兩個空格分隔。注釋由#和一個空格開始。
6.約定俗成的命名約定
①永遠不要使用字母‘l’(小寫的L),‘O’(大寫的O),或者‘I’(大寫的I)作為單字符變量名。
②在有些字體里,這些字符無法和數字0和1區分,如果想用‘l’,用‘L’代替。