反轉字串(三種解法) leetcode

2021-10-03 21:43:47 字數 1397 閱讀 6999

題目描述:

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

解題思路:

1、第一種解題思路:利用for迴圈借助中間值,來進行陣列中的元素交換

2、第二種解題思路:將char型的陣列轉換成字串,利用stringbuffer.reverse(),即自帶的翻轉函式

3、第三種解題思路:使用遞迴雙指標,乙個頭指標,乙個尾指標,當兩個指標相遇之時則翻轉完成

下面來分別進行實現:

1、第一種解題思路:利用for迴圈借助中間值,來進行陣列中的元素交換

優點:想法簡單,容易想出

缺點:時間效率低

class

solution

}}

2、第二種解題思路:將char型的陣列轉換成字串,利用stringbuffer.reverse(),即自帶的翻轉函式

優點:不用進行陣列元素之間的交換(這裡指顯示的交換)

缺點:時間效率低

class

solution

stringbuffer strb =

newstringbuffer

(str)

; strb.

reverse()

; strb.

getchars(0

, s.length,s,0)

;}}

3、第三種解題思路:使用遞迴雙指標,乙個頭指標,乙個尾指標,當兩個指標相遇之時則翻轉完成

優點:時間效率較高

建議:要有使用「指標」的思想

class

solution

public

void

reversestring

(char

s,int left,

int right)

char tmp = s[left]

; s[left]

= s[right]

; s[right]

= tmp;

reversestring

(s,++left,

--right);}

}

實現 strStr 字串匹配的三種解法

題目描述 實現 strstr 函式。給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 hays...

php反轉字串的三種方法

假設有字串abcd,用php實現字串翻轉 1.第一種php有自帶的函式strrev可以輕鬆實現 str abcd 第一種自帶strrev實現翻轉 echo strrev str 輸出效果 2.就是把分割字串到乙個陣列中,然後遍歷拼接 function joinstrrev str return ne...

345 反轉字串中的母音字母Leetcode

編寫乙個函式,以字串作為輸入,反轉該字串中的母音字母。示例 1 輸入 hello 輸出 holle 示例 2 輸入 leetcode 輸出 leotcede 說明 母音字母不包含字母 y 思路 使用雙指標法 如果遇到前面的指標和後面的指標都遇到母音則交換 class solution 如果作指標和右...