看到網上的面經,有下面這樣一道演算法題。我看到第一眼有那麼點思路的,必須要自己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...