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

建设网站怎么提需求百家号关键词seo优化

建设网站怎么提需求,百家号关键词seo优化,哪个网站可以免费看小说不收费,服务器不是自己的做违法网站刚开始的思路,先不管效率,跑出来再说,然后再进行优化。然后就有了下面的暴力代码: func lengthOfLongestSubstring(s string) int {// count 用来记录当前最长子串长度var count int// flag 用来对下面两个 if 语句分流var flag …

刚开始的思路,先不管效率,跑出来再说,然后再进行优化。然后就有了下面的暴力代码:

func lengthOfLongestSubstring(s string) int {// count 用来记录当前最长子串长度var count int// flag 用来对下面两个 if 语句分流var flag int = 0// for 对字符串进行遍历for i := 0; i < len(s); i++ {// mark 用来记录当前子串,初始为当前遍历遇到的第一个字符mark := string(s[i])// 这个 for 循环用来接着 mark 往后遍历,如果遇到的字符不在 mark 里,就往 mark 后面接for j := i + 1; j < len(s); j++ {// strings.Contain(A string, B string) 用来判断 A 中是否有 B,有返回 true, 没有返回 falseif strings.Contains(mark, string(s[j])) == true {// 有的话就 break, 当前是一个完整的无重复子串,再往后接就重复了break}if strings.Contains(mark, string(s[j])) == false {// 没有说明还能接着往后接,就继续遍历mark += string(s[j])}}if flag == 0 {// flag == 0 表示这是该字符串遇到的第一个无重复子串,把长度记录下来count = len(mark)flag = 1} else if flag == 1 {// flag == 1 表示这以及不是第一个子串了,那么就计算当前无重复子串的长度// 和原先比较,更长的话就重新赋值给 count, 否则就不重新赋值if count < len(mark) {count = len(mark)}}}return count
}

跑是跑出来了,时间 300ms (仅超过 5% 用户),内存 6.44MB (仅超过 7% 用户),那我得优化以下。我寻思能不能用字符指针,让源代码减少一个 for 循环?emmm 然后我就开始写代码,但是我发现指针并不能减少一个 for 循环,因为始终需要一个 for 来遍历子串起始位置,另一个 for 用来移动指针,写都写了,就上代码吧:

package mainimport ("fmt""strings""unsafe"
)func lengthOfLongestSubstring(s string) int {// 先将字符串变成字符数组,采用用指针遍历bytes := []byte(s)// 定义字符指针var bytePtr *byte// flag 和 count 的作用上一版程序说过了,不赘述var flag int = 0var count intfor i := 0; i < len(s); i++ {mark := string(s[i])for j := i + 1; j < len(s); j++ {// 指针指向 bytes[j] 位置的元素// golang 这种字符指针很麻烦,必须用 unsafe.Pointer() 进行转换bytePtr = (*byte)(unsafe.Pointer(&bytes[j]))if strings.Contains(mark, string(*bytePtr)) == false {// 如果该字符不在前面的子串中,则加入mark += string(*bytePtr)// 指针后移一位bytePtr = (*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(bytePtr)) + 1))}if strings.Contains(mark, string(*bytePtr)) == true {break}}if flag == 0 {count = len(mark)flag = 1} else if flag == 1 {if count < len(mark) {count = len(mark)}}}return count
}func main() {var s = "pwwkew"fmt.Println(lengthOfLongestSubstring(s))
}

笑死了,时间 216ms (仅超过 5.84% 用户),内存 6.46MB (仅超过 6.98% 用户),几乎没有优化。我想着看看大佬都是怎么写的吧。发现大佬用的是滑动窗口,确实酷,来个大佬讲解视频的链接 点这里跳转,然后下面是代码,看不懂的朋友可以进行单步调试,我是边调边画图理解的。该程序运行时间 0ms,占用内存 2.26MB ,比我原方案效率高太多了,妙不可言。

package mainimport ("fmt"
)func lengthOfLongestSubstring(s string) (ans int) {window := [128]bool{} // 也可以用 map,这里为了效率用的数组left := 0for right, c := range s {for window[c] { // 加入 c 后,窗口内会有重复元素window[s[left]] = falseleft++}window[c] = trueans = max(ans, right-left+1) // 更新窗口长度最大值}return
}func max(a, b int) int {if b > a {return b}return a
}func main() {var s = "pwwkew"fmt.Println(lengthOfLongestSubstring(s))
}
http://www.tj-hxxt.cn/news/108504.html

相关文章:

  • iis发布网站 主目录重定向到url营销活动
  • wordpress国外网站企业网站推广策略
  • 管理咨询公司业务百度seo找哪里
  • 做女装网站应怎么定位百度小程序
  • 做网站的企业文化怎么写好网站制作公司
  • wordpress主题vantage重庆seo招聘
  • 手机软件商城免费下载seo运营培训
  • 中山免备案网站建设目前病毒的最新情况
  • 安装了lnmp怎么做网站推广策略
  • 网站建设大致价格2017站长权重
  • 天猫网站建设的理由pageadmin建站系统
  • 长沙市设计网站公司b2b电子商务平台排名
  • 医院网站建设官网seo网站推广优化
  • 怎么看一个网站是不是仿站什么是竞价推广
  • 国家和住房城乡建设部网站首页网站后台管理系统
  • 淘客网站如何建设自己数据库郑州网站推广
  • 网站备案了有什么好处合肥网站推广电话
  • 不花钱做推广的网站中央网站seo
  • 欧美动物人物ppt免费模板下载网站seo关键词优化排名哪家好
  • python网站开发优缺点成都网站排名优化公司
  • 自己怎么做百度网站空间如何快速推广网上国网
  • 西安网站建设成功建设广州网站seo地址
  • 佛山市多语言营销型网站建站搜资源的搜索引擎
  • 济南企业型网站百度有哪些app产品
  • wordpress 焦点图大小网店关键词怎么优化
  • 企业网站的意思教你如何建立网站
  • 自己独立服务器网站建设百度怎么做网站
  • wordpress修改阅读量seo公司 上海
  • delphi怎么做网站公司怎么在百度上推广
  • 适合ps做图的素材网站seo标题优化裤子关键词