leetcode 344 —字串的反轉
編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。
不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 o(1) 的額外空間解決這一問題。
你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。
示例 1:
輸入:[「h」,「e」,「l」,「l」,「o」]
輸出:[「o」,「l」,「l」,「e」,「h」]
示例 2:
輸入:[「h」,「a」,「n」,「n」,「a」,「h」]
輸出:[「h」,「a」,「n」,「n」,「a」,「h」]
分析題意:
輸入是乙個字元陣列 char s形式給出,輸出也是通過char s形式給出;
方法的作用是將輸入的字元陣列反轉過來;
不能給陣列分配額外的空間,使用o(1)的空間複雜度所有的字元都在ascii碼表中可以列印
我們很容易想到通過乙個中間陣列對原來的陣列進行反向賦值,定義乙個字元陣列 char t
對於第乙個例子而言:
t0 = s4 = o
t1 = s3 = l
t2 = s2 = l
t3 = s1 = e
t4 = s0 = h
最後將字元陣列t賦值給s,直接貼上**
class
solution
// 最後將這個陣列賦值給原陣列
for(
int i =
0; i < s.length ; i++)}
}
這種解法不符合題意,有乙個中間陣列的開銷,空間複雜度為o(n),不滿足題意o(1)的額外空間。
有一種很常用的方法,雙指標法,滿足一定條件下,通過首尾兩個指標指向元素交換位置即可實現兩個元素交換,比較抽象,
h e l l o
頭指標 start 指向h ,尾指標指向o ,當頭指標不超過尾指標的時候,就不用交換了即為start >= end。
直接附上**
class
solution
}}
使用遞迴的方法,所有的迴圈都可以使用遞迴實現。遞迴分為兩步
附上**
class
solution
public
static
void
recursion
(int left,
int right ,
char
s)}
雙指標法是一種很常見的處理陣列、鍊錶、字串、樹等方法,涉及到元素比較的場合往往會用到此方法;
迴圈通常也可以用遞迴解決,遞迴需要找到終止條件和遞迴具體實現。
leetcode344 反轉字串
思想 題目要求編寫乙個函式,其作用是將輸入的字串反轉過來。class solution object def reversestring self,s type s str rtype str return s 1 知識點 a 0,1,2,3,4,5,6,7,8,9 b a i j 表示複製a i ...
leetcode344 反轉字串
編寫乙個函式,其作用是將輸入的字串反轉過來。編寫乙個函式,其作用是將輸入的字串反轉過來。示例 1 輸入 hello 輸出 olleh 示例 2 輸入 a man,a plan,a canal panama 輸出 amanap lanac a nalp a nam a 首先想到的是這個 class s...
leetcode 344 反轉字串
題目 344.反轉字串 編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列char的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。示例 1 輸入 h e l l o ...