**問題描述**
請實現一個算法,在不使用【額外數據結構和儲存空間】的情況下,翻轉一個給定的字符串(可以使用單個過程變量)。
給定一個 string,請返回一個 string,為翻轉后的字符串。保證字符串的長度小于等于 5000。
**解題思路**
翻轉字符串其實是將一個字符串以中間字符為軸,前后翻轉,即將 str\[len\]賦值給 str\[0\],將 str\[0\] 賦值 str\[len\]。
**源碼參考**
~~~
func reverString(s string) (string, bool) {
str := []rune(s)
l := len(str)
if len > 5000 {
return s, false
}
for i := 0; i < len/2; i++ {
str[i], str[l-1-i] = str[l-1-i], str[i]
}
return string(str), true
}
~~~
**源碼解析**
以字符串長度的 1/2 為軸,前后賦值
- Golnag常見面試題目解析
- 交替打印數組和字母
- 判斷字符串中字符是否全都不同
- 翻轉字符串
- 判斷兩個給定的字符串排序后是否一致
- 字符串替換問題
- 機器人坐標計算
- 語法題目一
- 語法題目二
- goroutine和channel使用一
- 實現阻塞讀的并發安全Map
- 定時與 panic 恢復
- 高并發下的鎖與map讀寫問題
- 為 sync.WaitGroup 中Wait函數支持 WaitTimeout 功能.
- 七道語法找錯題目
- golang 并發題目測試
- 記一道字節跳動的算法面試題
- 多協程查詢切片問題
- 對已經關閉的的chan進行讀寫,會怎么樣?為什么?
- 簡單聊聊內存逃逸?
- 字符串轉成byte數組,會發生內存拷貝嗎?
- http包的內存泄漏