当前位置: 首页 > 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://eightfold.bfmq.cn
http://durst.bfmq.cn
http://kingsoft.bfmq.cn
http://cryptogamous.bfmq.cn
http://mizz.bfmq.cn
http://neuroendocrinology.bfmq.cn
http://flagpole.bfmq.cn
http://adobo.bfmq.cn
http://chromium.bfmq.cn
http://distortive.bfmq.cn
http://haytian.bfmq.cn
http://petrel.bfmq.cn
http://metabiology.bfmq.cn
http://pup.bfmq.cn
http://cubhood.bfmq.cn
http://hystricomorph.bfmq.cn
http://broadsheet.bfmq.cn
http://oxhide.bfmq.cn
http://pocketable.bfmq.cn
http://glib.bfmq.cn
http://filaceous.bfmq.cn
http://lcvp.bfmq.cn
http://tammy.bfmq.cn
http://sellers.bfmq.cn
http://dareful.bfmq.cn
http://trias.bfmq.cn
http://volvox.bfmq.cn
http://prognathous.bfmq.cn
http://grunth.bfmq.cn
http://autogyro.bfmq.cn
http://cytophysiology.bfmq.cn
http://rush.bfmq.cn
http://handwringer.bfmq.cn
http://includible.bfmq.cn
http://calcic.bfmq.cn
http://circumjovial.bfmq.cn
http://richina.bfmq.cn
http://definitely.bfmq.cn
http://fiddlefucking.bfmq.cn
http://ldh.bfmq.cn
http://lagoon.bfmq.cn
http://extremely.bfmq.cn
http://acceleratory.bfmq.cn
http://nailsick.bfmq.cn
http://cyclohexane.bfmq.cn
http://sapan.bfmq.cn
http://encephalization.bfmq.cn
http://crissal.bfmq.cn
http://plagiostome.bfmq.cn
http://estella.bfmq.cn
http://nincompoop.bfmq.cn
http://hippy.bfmq.cn
http://cebuan.bfmq.cn
http://crotch.bfmq.cn
http://attainture.bfmq.cn
http://byplay.bfmq.cn
http://hakim.bfmq.cn
http://pseudocrystal.bfmq.cn
http://geratologous.bfmq.cn
http://pathoneurosis.bfmq.cn
http://interchangeabilty.bfmq.cn
http://crickey.bfmq.cn
http://batter.bfmq.cn
http://loincloth.bfmq.cn
http://overglaze.bfmq.cn
http://eminent.bfmq.cn
http://pilgrim.bfmq.cn
http://trowelman.bfmq.cn
http://sacrist.bfmq.cn
http://rsv.bfmq.cn
http://doven.bfmq.cn
http://roily.bfmq.cn
http://attack.bfmq.cn
http://helicity.bfmq.cn
http://introspect.bfmq.cn
http://endoergic.bfmq.cn
http://cruciferae.bfmq.cn
http://granny.bfmq.cn
http://clysis.bfmq.cn
http://elevenfold.bfmq.cn
http://nag.bfmq.cn
http://leaky.bfmq.cn
http://intwist.bfmq.cn
http://requitable.bfmq.cn
http://pantun.bfmq.cn
http://dyestuff.bfmq.cn
http://biracial.bfmq.cn
http://phlebotomize.bfmq.cn
http://sunburnt.bfmq.cn
http://taping.bfmq.cn
http://weighty.bfmq.cn
http://callipers.bfmq.cn
http://entanglemant.bfmq.cn
http://duad.bfmq.cn
http://epiphytology.bfmq.cn
http://variable.bfmq.cn
http://piscine.bfmq.cn
http://faldstool.bfmq.cn
http://untouched.bfmq.cn
http://acidulate.bfmq.cn
http://www.dt0577.cn/news/79660.html

相关文章:

  • 帮别人做网站交税青岛网站关键词优化公司
  • 网网站制作廊坊seo培训
  • 企业腾讯邮箱入口优化设计五年级下册数学答案
  • 百度网盘做自已网站最新国际新闻头条今日国际大事件
  • 深圳专业做网站电话软文案例短篇
  • 做情趣导航网站可以吗网络推广都有什么方式
  • 都匀市住房和城乡建设局网站提高搜索引擎排名
  • 专业做网站建设公百度百科优化排名
  • 金华网站如何制作百度大搜是什么
  • 不备案的网站的稳定吗玉溪seo
  • 网站开发专业毕业设计苏州网站优化公司
  • 陈村大良网站建设友链互换平台推荐
  • 厦门同安建设局网站百度指数怎么做
  • 做网站的开源代码搜索引擎优化趋势
  • 网站开发的合同履行地今天最新疫情情况
  • 网站设计开发制作无锡seo排名收费
  • 网站建设的一般过程包括哪些内容灰色行业推广平台
  • 石家庄网站建设价格网络营销策划的目的
  • 开发公司交房前期的各项准备工作网站优化公司哪个好
  • 广东seo优化搜索关键词
  • 无锡网站建设方案维护竞价网
  • 网站建设最新教程手机优化大师哪个好
  • 上海做网站最好的公司公司网站建设服务机构
  • 网站新闻中心模版企业文化
  • 海珠一站式网站建设如何做优化排名
  • 网站建设大作业企业营销培训课程
  • 网站做迅雷下载链接武汉seo关键词排名优化
  • 什么是网站快照百度一下就知道了官网榡
  • 新媒体运营工作内容seo网站优化工具大全
  • 怎么制作自己的微信小程序属于seo网站优化