演算法題 字串反轉集合

2021-10-08 02:11:48 字數 1514 閱讀 3841

看到網上的面經,有下面這樣一道演算法題。我看到第一眼有那麼點思路的,必須要自己code下。

給定乙個字串s = 「i am a student」,使其成為"student a am i"

public string reversewords_1

(string s)

reverse

(cs,i, j -1)

;//下次反轉的起點

i = j +1;

j++;}

return

newstring

(cs);}

private

void

reverse

(char

arr,

int start,

int end)

}

最後,如果在不寫while雙迴圈,可能需要一次if一次if else分別判斷兩種需要反轉單詞的情況。

下面有一道類似地題目,我們趁熱打鐵!

給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。

輸入: 「let』s take leetcode contest」

輸出: 「s』tel ekat edocteel tsetnoc」

這道題和上面恰好反過來,單詞的順序不改變,單詞的內容需要反轉。不需要前面那一步反轉,只需要後面每個單詞單獨反轉,先用上面的方法試驗下。

private

void

reverse

(char

arr,

int start,

int end)

}public string reversewords_2

(string s)

reverse

(chars, i, j -1)

; i = j +1;

j ++;}

}

下面的是leetcode的官方答案,雖然時間複雜度和空間複雜度和我們自己的做法都是一樣的,但是顯然我們的解答更加簡潔,但是官方解答可以讓我們多熟悉下string和stringbuilder的操作。

public

class

solution

public string[

]split

(string s)

else

word.

(s.charat

(i));}

words.

add(word.

tostring()

);return words.

toarray

(new

string

[words.

size()

]);}

public string reverse

(string s)

}

leetcode刷題 字串 反轉字串

給定乙個字串 s 和乙個整數 k,你需要對從字串開頭算起的每隔 2k 個字元的前 k 個字元進行反轉。如果剩餘字元少於 k 個,則將剩餘字元全部反轉。如果剩餘字元小於 2k 但大於或等於 k 個,則反轉前 k 個字元,其餘字元保持原樣。示例 輸入 s abcdefg k 2 輸出 bacdfeg 該...

演算法題 字串旋轉

對於乙個字串,和字串中的某一位置,請設計乙個演算法,將包括i位置在內的左側部分移動到右邊,將右側部分移動到左邊。給定字串a和它的長度n以及特定位置p,請返回旋轉後的結果。測試樣例 abcdefgh 8,4 返回 fghabcde 正常解法 1.用 按特定位置訪問逐字元拷貝 class stringr...

演算法題 字串解碼

1,給定乙個字串,目標是將寫在 和 之間的字串,重複 號前面的數字次數 數字只會是個位數 2,例如 輸入結果 strs he3 llo world 輸出結果 res hellollolloworld 輸入結果 strs he3 ll2 o wo rld 輸出結果 res helloowolloowo...