offer53的要求是,給出乙個類似下面的句子:
student. a am i
它滿足的結構是:單詞和符號本身的順序是正確的,但是句子的順序是倒序的,現在需要將其翻轉,即輸出 i am a student.
python中可以利用空格對整個字串進行切片,這是個語法糖:
# offer53-solution 1
defreversesentence
(self, s)
:#切片組合法
iflen
(s.split())
==0:return s
return
' '.join(s.split()[
::-1
])
如果要正兒八經地寫的話,最容易想到的就是兩次翻轉法:先完整地對整個字串進行翻轉,然後再從左往右遍歷單詞,將每個單詞再反轉過來。
# offer53-solution 2
class
solution
:def
reversesentence
(self, s)
:# write code here
if s ==
none
orlen
(s)<=0:
return
'' s =
list
(s) s = self.reverse(s)
pstart =
0 pend =
0 listtemp =
result =
''# print(s)
while pend <
len(s)
:if pend ==
len(s)-1
:]))
break
if s[pstart]
==' '
: pstart +=
1 pend +=
1' '
)elif s[pend]
==' ':)
) pstart = pend
else
: pend +=
1print
(listtemp)
for i in listtemp:
result +=
''.join(i)
return result
defreverse
(self, s)
: start =
0 end =
len(s)-1
while
(start < end)
: s[start]
, s[end]
= s[end]
, s[start]
start +=
1 end -=
1return s
無論是哪種方法,考察的就是python的特性和字串的操作,本題思路幾乎沒有難點,就是寫的時候會有些坑 劍指offer 53 表示數值的字串
請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。本題的主要解題思路如下 首先判斷字串是否為空,或者首元素是否為 若是是則直接返回false 否...
劍指offer 53 表示數值的字串
題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。輸出描述 true false 在數值之前可能有乙個表示正負的 或者 接下來是若干個...
劍指Offer53 表示數值的字串
思路 coding utf 8 class solution s字串 def isnumeric self,s write code here hase false sign false decimal false for i in range 0,len s if s i e or s i e i...