Go语言实现:不反转单词本身,仅反转点分隔的单词顺序
反转以点号分隔的单词顺序
需求:给定字符串S,需在不反转单个单词内容的前提下,反转字符串中单词的整体顺序,单词之间以点号(.)分隔。
- 输入示例:
i.like.this.program.very.much - 输出示例:
much.very.program.this.like.i
原代码问题说明
你提供的代码存在逻辑错误:代码中用空格作为分隔符进行分割和拼接,但需求里单词是以点号分隔的,因此无法得到正确结果。
正确的Go语言实现
package main import ( "fmt" "strings" ) func main() { str := "i.like.this.program.very.much" // 按点号分割字符串为单词切片 words := strings.Split(str, ".") wordCount := len(words) // 首尾交换反转单词切片 for i := 0; i < wordCount/2; i++ { oppositeIdx := wordCount - i - 1 words[i], words[oppositeIdx] = words[oppositeIdx], words[i] } // 用点号拼接反转后的单词切片 reversedStr := strings.Join(words, ".") fmt.Println(reversedStr) }
代码说明
strings.Split(str, "."):将原字符串按点号分割成独立单词的切片- 双指针交换:通过首尾位置的单词交换实现切片反转,无需额外创建新切片,内存效率更高
strings.Join(words, "."):将反转后的单词切片重新拼接为以点号分隔的目标字符串
内容的提问来源于stack exchange,提问作者RAM
相关产品推荐
相关产品推荐

