描述思路編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列
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...