实现 strStr()。
返回蕴含在 haystack 中的 needle 的第一个字符的索引,如果 needle 不是 haystack 的一部分则返回 -1 。
例 1:
输入: haystack = "hello", needle = "ll"
输出: 2
例 2:
输入: haystack = "aaaaa", needle = "bba"
输出: -1
详见:https://leetcode.com/problems/implement-strstr/description/

Java实现:

方法一:暴力解

class Solution {
public int strStr(String haystack, String needle) {
int hsize=haystack.length();
int nsize=needle.length();
int i=0;
int j=0;
while(i<hsize&&j<nsize){
if(haystack.charAt(i)==needle.charAt(j)){
++i;
++j;
}else{
i=i-j+1;
j=0;
}
}
if(j==nsize){
return i-j;
}else{
return -1;
}
}
}

方法二:KMP算法

class Solution {
public int strStr(String s, String p) {
int i=0;
int j=-1;
int ps=p.length();
int[] next=new int[ps+1];
next[0]=-1;
while(i<ps){
if(j==-1||p.charAt(i)==p.charAt(j)){
++i;
++j;
next[i]=j;
}else{
j=next[j];
}
}
int ss=s.length();
i=0;
j=0;
while(i<ss&&j<ps){
if(j==-1||s.charAt(i)==p.charAt(j)){
++i;
++j;
}else{
j=next[j];
}
}
if(j==ps){
return i-j;
}
return -1;
}
}

最新文章

  1. win64位安装python-mysqldb1.2.5
  2. odi 12.2.1.1新特性
  3. miniUI datagrid 获取序号
  4. DDD:使用EntityFramework的话,如果只为聚合根设计仓储,其它实体如何处理?
  5. Linux中MySQL5.5解压版普通用户安装
  6. Linux SO_KEEPALIVE属性,心跳
  7. WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞
  8. cocos2dx 文件处理
  9. cocos2d-x3.2中加入Android手机震动
  10. OBIEE 简介
  11. HDU 4044 GeoDefense
  12. java删除数组中的第n个数
  13. 【learning】多项式相关(求逆、开根、除法、取模)
  14. Vue.js 学习笔记 第1章 初识Vue.js
  15. C++中几种输入输出cin、cin.getline()、getline()、sscanf()、sprintf()、gets()等
  16. C++系列总结——volatile关键字
  17. ansible笔记(4):常用模块之文件操作
  18. rails gem更换ruby-china源
  19. enum 关键字
  20. memcached(一):linux下memcached安装以及启动

热门文章

  1. HUD1455:Sticks
  2. C++11中的原子操作(atomic operation)
  3. [bzoj2038]莫队算法学习
  4. viewstate的基本用法
  5. mongodb 分页(limit)
  6. How to install Samba server on Ubuntu 12.04
  7. C#在Linux上的开发指南
  8. redis命令集
  9. Collectd+InfluxDB+Grafana监控系统搭建
  10. BK Componet Monitor