go 实现indexOf,leetCode28

letterbeezps · · 1448 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

# go indexOf ## indexOf indexOf(s, p string) 函数会返回p在s中首次出现的位置,倘如没有则返回-1,本次使用之前提到过的[kmp算法](https://studygolang.com/articles/35372)来作为indexOf的核心,并用来解决leetcode28题 ## code ```go func strStr(haystack string, needle string) int { return indexOf(haystack, needle) } func indexOf(s, p string) int { if len(p) == 0 { return 0 } next := make([]int, len(p)) next[0] = -1 j := -1 for i := 1; i < len(p); i++ { for j != -1 && p[i] != p[j+1] { j = next[j] } if p[i] == p[j+1] { j++ } next[i] = j } j = -1 for i := 0; i < len(s); i++ { for j != -1 && s[i] != p[j+1] { j = next[j] } if s[i] == p[j+1] { j++ } if j == len(p) - 1 { return i - j } } return -1 } ```

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1448 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传