LeetCode:557. Reverse Words in a String III

題目:
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()
}

發佈留言