当前位置: 首页 > news >正文

day6 力扣公共前缀--go实现---对字符串的一些思考

今日份知识:

curl -x 指定方法名  请求的url -d  请求体body里面的内容 //curl命令
curl -x Get 127.0.0.1:8080/add/user -d jinli

curl如果不指定方法,默认使用get方法,在go里面,get方法到底可以不可以把内容数据写在body里面传递呢

其实是可以的,通常如果我们使用get方法,都是把参数写在url里面,是否支持这个需要看具体的浏览器是否支持,例如google好像就不支持,但是自己写个webui,然后使用curl -x Get去获取body的话是可以获取到的,

但是RFC7231不鼓励这样的方式,所以这样的方式还是有可能读不到的

get方法是幂等性的,post不是幂等的

今日份力扣:14 最长前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。

提示:

1 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i] 仅由小写英文字母组成

今日份思考:使用go实现

字符串和数组其实很像,字符串在go里面一旦定义就无法更改,所以我们想改变字符串,就要拼接,替换等操作,那么也就会出现很多已经写好的api,比如go可以使用+号连接,可以使用fmt.Sprintf,可以使用strings里面的aip,可以使用buffer.strings等函数,

func commentPerf(str []string) string {if str == nil || len(str) == 0 {return ""}temp := ""for i := 0; i < len(str[0]); i++ {for j := 1; j < len(str); j++ {if i >= len(str[j]) || str[j][i] != str[0][i] {return temp}}temp = temp + string(str[0][i])}return temp
}

下面是go实现具体demo

+:会对字符串进行遍历,计算并开辟一个新的空间来存储原来的两个字符串。```go
func main() {a := "nihao"b := "hello"fmt.Println(a + b)
}

Sprintf:必须要用反射获取值,因此有性能损耗

func main() {a := "nihao"b := "hello"c := fmt.Sprintf("%s,%s", a, b)fmt.Println(c)
}

strings.Builder:里面维护了一个可变的字节缓冲区,不用创建新的字符串变量,可以直接往缓冲区增加字符串、字符或字节片段,它是直接把[]byte转换为string,从而避免变量拷贝

type Builder struct {addr *Builderbuf  []byte
}func main() {a := "nihao"b := "hello"var bulid strings.Builderbulid.WriteString(a)bulid.WriteString(" ")bulid.WriteString(b)c := bulid.String()fmt.Println(c)
}

bytes.Buffer:字节缓冲器,里面存放都是byte,使用 bytes.Buffer 时,可以避免频繁地创建新的字符串变量,从而减少内存分配,也避免变量拷贝

type Buffer struct {buf      []byteoff      intlastRead readOp
}func main() {a := "nihao"b := "hello"var bytes bytes.Bufferbytes.WriteString(a)bytes.WriteString(" ")bytes.WriteString(b)c := bytes.String()fmt.Println(c)
}

strings.Join:自定义分隔符,适用对象[]string类型,因为我们传入切片长度固定,所以提前进行容量分配可以减少内存分配

func main() {a := []string{"nihao", "hello"}c := strings.Join(a, "+")fmt.Println(c)
}

http://www.lryc.cn/news/265604.html

相关文章:

  • 27.Java程序设计-基于Springboot的在线考试系统小程序设计与实现
  • Redis可视化工具Redis Desktop Manager mac功能特色
  • 【C++】揭开运算符重载的神秘面纱
  • 竞赛保研 基于LSTM的天气预测 - 时间序列预测
  • 前端常用的开发工具
  • 鸿蒙开发语言介绍--ArkTS
  • 关于“Python”的核心知识点整理大全36
  • 安装nodejs,配置环境变量并将npm设置淘宝镜像源
  • 12.18构建哈夫曼树(优先队列),图的存储方式,一些细节(auto,pair用法,结构体指针)
  • 《Python》面试常问:深拷贝、浅拷贝、赋值之间的关系(附可变与不可变)【用图文讲清楚!】
  • 使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错问题
  • Python编程题目答疑「Python一对一辅导考试真题解析」
  • Python---搭建Python自带静态Web服务器
  • 在服务器上部署SpringBoot项目jar包
  • [python]python实现对jenkins 的任务触发
  • Python生成圣诞节贺卡-代码案例剖析【第18篇—python圣诞节系列】
  • 深度剖析Ajax实现方式(原生框架、JQuery、Axios,Fetch)
  • 任天堂,steam游戏机通过type-c给VR投屏与PD快速充电的方案 三type-c口投屏转接器
  • Flink系列之:Checkpoints 与 Savepoints
  • 【优质书籍推荐】LoRA微调的技巧和方法
  • Linux一行命令配置jdk环境
  • 从0开始刷剑指Offer
  • 使用Java语言中的算法输出杨辉三角形
  • 人工智能_机器学习071_SVM支持向量机_人脸识别算法_LFW人脸数据加载_与理解---人工智能工作笔记0111
  • Java 8中流Stream API详解
  • 通过 xlsx 解析上传excel的数据
  • Flink系列之:JDBC SQL 连接器
  • OpenCV与YOLO学习与研究指南
  • hive中map相关函数总结
  • HttpServletRequestWrapper、HttpServletResponseWrapper结合 过滤器 实现接口的加解密、国际化