Leecode探索之初級演算法 反轉字串

2021-10-08 13:21:09 字數 1517 閱讀 2802

描述

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列char的形式給出。

不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 o(1) 的額外空間解決這一問題。

你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。

樣例

example 1:

輸入:[「h」,「e」,「l」,「l」,「o」]

輸出:[「o」,「l」,「l」,「e」,「h」]

example 2:

輸入:[「h」,「a」,「n」,「n」,「a」,「h」]

輸出:[「h」,「a」,「n」,「n」,「a」,「h」]

思路

偷懶方式:chars.reverse()函式直接實現字串翻轉;

方法1:直接對換法(顯然超時);

方法2:雙指標法;

def

reversestring

(chars)

:#偷懶方式

chars.reverse(

)#reverse()直接實現

#方法1:逐各對換法(超時)

length =

len(chars)

for i in

range

(length-1)

:for j in

range

(length-i-1)

: tmp = chars[j]

chars[j]

= chars[j+1]

chars[j+1]

= tmp

print

(chars)

return chars

#方法2:雙指標法

#normal expression

left =

0 right =

len(chars)-1

while left < right:

tmp = chars[left]

chars[left]

= chars[right]

chars[right]

= tmp

left = left +

1 right = right -

1print

(chars)

#advanced expression

left, right =0,

len(chars)-1

while leftchars[left]

,chars[right]

= chars[right]

,chars[left]

left,right = left+

1,right-

1

演算法之初級排序

講排序之前先來幾個簡單的函式 交換函式 public static void swap comparable a,int i,int j 小於函式 public static boolean less comparable v,comparable w 首先找到陣列中的最小元素,將它和陣列的第乙個元...

演算法之初級排序

將整個集合中最小的元素放置到集合最前面位置,繼續在剩下的集合中找到最小的元素放到剩下集合的最前面位置。一直迴圈重複這個步驟,直到整個集合有序。附加動畫 將當前元素插入到子集合中合適的位置。第一步從集合第乙個位置開始,遍歷到集合結束。當前元素為當前遍歷位 置的元素。子集合是指整個集合開始位置與當前遍歷...

初級演算法探索 陣列篇(一)

問題 從排序陣列中刪除重複項 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nu...