Golang | Leetcode Golang题解之第151题反转字符串中的单词

题目:

题解:

import (
	"fmt"
)

func reverseWords(s string) string {
	//1.使用双指针删除冗余的空格
	slowIndex, fastIndex := 0, 0
	b := []byte(s)
	//删除头部冗余空格
	for len(b) > 0 && fastIndex < len(b) && b[fastIndex] == ' ' {
		fastIndex++
	}
    //删除单词间冗余空格
	for ; fastIndex < len(b); fastIndex++ {
		if fastIndex-1 > 0 && b[fastIndex-1] == b[fastIndex] && b[fastIndex] == ' ' {
			continue
		}
		b[slowIndex] = b[fastIndex]
		slowIndex++
	}
	//删除尾部冗余空格
	if slowIndex-1 > 0 && b[slowIndex-1] == ' ' {
		b = b[:slowIndex-1]
	} else {
		b = b[:slowIndex]
	}
	//2.反转整个字符串
	reverse(&b, 0, len(b)-1)
	//3.反转单个单词  i单词开始位置,j单词结束位置
	i := 0
	for i < len(b) {
		j := i
		for ; j < len(b) && b[j] != ' '; j++ {
		}
		reverse(&b, i, j-1)
		i = j
		i++
	}
	return string(b)
}

func reverse(b *[]byte, left, right int) {
	for left < right {
		(*b)[left], (*b)[right] = (*b)[right], (*b)[left]
		left++
		right--
	}
}

相关推荐

  1. [力扣题解] 151. 字符串单词

    2024-06-16 06:58:01       10 阅读
  2. 面试经典---151.字符串单词

    2024-06-16 06:58:01       36 阅读
  3. 力扣-151. 字符串单词

    2024-06-16 06:58:01       41 阅读
  4. 字符串单词(力扣151

    2024-06-16 06:58:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 06:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 06:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 06:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 06:58:01       18 阅读

热门阅读

  1. 神经网络-文本-图像-音频-视频基础知识

    2024-06-16 06:58:01       10 阅读
  2. flinksql BUG : flink hologres-cdc source FINISHED

    2024-06-16 06:58:01       9 阅读
  3. python命名空间详解

    2024-06-16 06:58:01       8 阅读
  4. 搭建Python虚拟环境(三):Conda

    2024-06-16 06:58:01       9 阅读
  5. vuex是什么?如何使用?使用他的功能场景?

    2024-06-16 06:58:01       8 阅读
  6. Web前端经验:探索、挑战与成长的奇幻之旅

    2024-06-16 06:58:01       11 阅读
  7. mac编译dbgen出错rand::rngs::OsRng

    2024-06-16 06:58:01       9 阅读
  8. 深入浅出Spring Boot自动装配:让开发更轻松

    2024-06-16 06:58:01       8 阅读
  9. Qt 槽函数重载时通过函数指针绑定

    2024-06-16 06:58:01       9 阅读