题解 | #句子逆序#
句子逆序
https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3
package main import ( "bufio" "fmt" "os" "strings" ) func reverseSentence(sentence string) string { words := strings.Split(sentence, " ") reversedWords := make([]string, len(words)) for i := 0; i < len(words); i++ { reversedWords[len(words)-i-1] = words[i] } return strings.Join(reversedWords, " ") } func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { sentence := scanner.Text() reversedSentence := reverseSentence(sentence) fmt.Println(reversedSentence) } }
这段代码首先定义了一个reverseWords
函数,用于将输入的句子按单词逆序排列。它通过使用strings.Split
函数将句子拆分成单词,并使用一个循环将单词逆序存储在reversedWords
切片中。最后,使用strings.Join
函数将逆序排列的单词重新组合成句子。
在main
函数中,我们使用bufio.Scanner
从标准输入读取多行输入。对于每一行输入,调用reverseWords
函数得到逆序排列的句子,并使用fmt.Println
打印结果。
请注意,此代码假设输入的每行只包含一个句子,并且句子中的单词由空格分隔。
错误示例:
package main import ( "bufio" "fmt" "os" "strings" ) func reverseSentence(sentence string) string { words := strings.Split(sentence, " ") reversedWords := make([]string, len(words)) for i := len(words) - 1; i >= 0; i-- { reversedWords = append(reversedWords, words[i]) } return strings.Join(reversedWords, " ") } func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { sentence := scanner.Text() reversedSentence := reverseSentence(sentence) fmt.Println(reversedSentence) } }
PS D:\Workspace\Go\src\projects\demo> go run main.go
I am a boy
boy a am I