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()}

沒有留言:

張貼留言

About

努力在程式的大海
用力的揮動雙手
找出屬於自己的航線

Blog Archive

Traffic