《劍指offer》53 字串的翻轉

2021-10-14 06:03:24 字數 1612 閱讀 6860

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...