劍指offer 面試20題

2022-04-23 01:11:30 字數 1783 閱讀 8626

面試20題:

題目:表示數值的字串

題:請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1e-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

解題思路一:利用python中的float強轉,如果可以那麼它是乙個合法的數值的字串,否則不是。

解題**:

#

-*- coding:utf-8 -*-

class

solution:

#s字串

defisnumeric(self, s):

#write code here

try:

return

float(s)

except

:

return

0

解題思路二:考慮是否有e存在,如果有,e後面必須有數字,且必須是整數(正整數o或負整數),如果沒有e存在,則判斷它是不是普通的數字。詳見下面**。

解題**:

#

-*- coding:utf-8 -*-

class

solution:

#s字串

defisnumeric(self, s):

#write code here

ifnot s or len(s)<=0:

return

false

alist=[i.lower() for i in

s] if'

e'inalist:

index=alist.index('e'

) front=alist[:index]

behind=alist[index+1:]

if'.'

in behind or len(behind)==0:

return

false

isfront=self.isdigit(front)

isbehind=self.isdigit(behind)

return isfront and

isbehind

else

:

return

self.isdigit(alist)

defisdigit(self,alist):

dotnum=0

allow_num = ['

0', '

1', '

2', '

3', '

4', '5'

, '6

', '

7', '

8', '

9', '

+', '

-', '.'

]

for i in

range(len(alist)):

if alist[i] not

inallow_num:

return

false

if alist[i]=='.'

: dotnum += 1

if alist[i] in'+-

'and i!=0:

return

false

if dotnum>1:

return

false

return true

劍指offer 面試35題

面試35題 題目 複雜鍊錶的複製 題 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路一 python作弊法 解題 coding ...

劍指offer 面試33題

面試33題 題 二叉搜尋樹的後序遍歷序列 題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。解題思路 遞迴 解題 coding utf 8 class solution defverifysquenceof...

劍指offer 面試31題

面試31題 題目 棧的壓入 彈出元素 題 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出...