as title
這是之前去面試的考題
想了很久,不過感覺不是最佳解
做個紀錄
期待有大神看到可以提供更好的解法XD
func main() {
s := "ABCDEFG"
t := len(s) - 1
tar1 := stringReverseRecursion1(s, t)
log.Println(tar1)
}
func stringReverseRecursion1(temp string, times int) string {
if times < 0 {
return temp[len(temp)/2:]
}
temp += string(temp[times])
times--
return stringReverseRecursion1(temp, times)
}
package main
import (
"fmt"
)
func reverseStrRecursion(input string) string {
runes := []rune(input)
if len(runes) <= 1 {
return string(runes)
}
return reverseStrRecursion(string(runes[1:])) + string(runes[0])
}
func main() {
s0 := ""
fmt.Println(reverseStrRecursion(s0))
s1a := "ㄅ"
fmt.Println(reverseStrRecursion(s1a))
s1b := "b"
fmt.Println(reverseStrRecursion(s1b))
s1c := "?"
fmt.Println(reverseStrRecursion(s1c))
s2a := "Hello"
fmt.Println(reverseStrRecursion(s2a))
s2b := "?????????????"
fmt.Println(reverseStrRecursion(s2b))
s3 := "The quick brown 狐 jumped over the lazy 犬"
fmt.Println(reverseStrRecursion(s3))
s4 := "明里つむぎ 佳苗るか 岬ななみ"
fmt.Println(reverseStrRecursion(s4))
}
貼的時候 水果都能看見....存了以後水果就變亂碼了.
最後那個return的地方真是厲害
我看了30分鐘才懂
我沒理解錯的話是return在等reverseStrRecursion處理完
然後reverseStrRecursion一直將字首拋出去連接
沒想到可以這樣用...
大神請受我一拜
其實這是標準的,遞迴的寫法. 另外注意到,我將他rune化了.
golang 的 rune , 在幾年前
https://ithelp.ithome.com.tw/articles/10161710
這篇也是我寫的.參考一下.
我也要對擺