leetcode- 实现strStr()
实现strStr()
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例 1:
输入: haystack = "hello", needle = "ll" 输出: 2
示例 2:
输入: haystack = "aaaaa", needle = "bba" 输出: -1
说明:
当 needle
是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle
是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
class Solution {
public int strStr(String haystack, String needle) {
int len1=haystack.length();
int len2=needle.length();
char [] hay=haystack.toCharArray();
char [] ne=needle.toCharArray();
if(len1==0&&len2!=0)return -1;
if(len1==0&&len2==0)return 0; //这一步可以省略 "" 和""进行比较的时候 返回0
for(int i=0;i<=len1-len2;i++){
int flag=1;
for(int j=0;j<len2;j++){
//在haystack中,只要有一个不满足,就跳出,因此设置标志flag的意义就在与此
if(hay[i+j]!=ne[j]){
flag=0;
break;
}
}
if(flag==1)return i;
}
return -1;
}
}
设计当前i的位置为temp,每遍历一次neddle,temp++,如果遍历完了neddle,那么temp==len+i-1,说明neddle遍历完成。输出i
class Solution { public int strStr(String haystack, String needle) { int len1=haystack.length();int len2=needle.length(); if(len2==0)return 0; if(len1==0)return -1; for(int i=0;i<=len1-len2;i++){ int temp=i; for(int j=0;j<len2;j++){ if(haystack.charAt(temp)!=needle.charAt(j)){ break; } temp++; } if(temp==i+len2) return i; } return -1; } }