題目:
Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.
範例:
Input: "Let's take LeetCode contest"Output: "s'teL ekat edoCteeL tsetnoc"
解法:
這題就是把句子的單字反過來
在這裡做string的操作的時候
發現在golang中有很神奇方法
可以省下記憶體跟計算量
在1.10後出現的
在strings包裡的Builder
詳細可看:https://golang.org/pkg/strings/#example_Builder
在第二層for,可以用stack的方式來解決似乎是比較好的方法
計算的復雜度會降低
func reverseWords(s string) string { temp := []rune(s) var bString strings.Builder var result strings.Builder for i := 0; i < len(temp); i++ { if s[i] == ' '{ for j := bString.Len(); j > 0; j-- { result.WriteByte(bString.String()[j-1]) } result.WriteString(" ") bString.Reset() } else if i == len(temp)-1 { bString.WriteRune(temp[i]) for j := bString.Len(); j > 0; j-- { result.WriteByte(bString.String()[j-1]) } } else { bString.WriteRune(temp[i]) } } return result.String()}
沒有留言:
張貼留言