题目:
实现 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() 定义相符。
代码:
package leetCode;
/**
* 2018.7.20
* 实现strStr()
* @author dhc
*
*/
public class TwentyEight {
//思路:循环haystack,判断当前循环元素是否和needle第一个元素相等,如果相等,判断needle是否是haystack子串的开头
public static int strStr(String haystack, String needle) {
if(needle.equals("")) {
return 0;
}
if(haystack.equals("") && !needle.equals("")) {
return -1;
}
//char f = needle.charAt(0);
for(int i = 0;i < haystack.length();i++) {
//char tem = haystack.charAt(i);
if(haystack.charAt(i) == needle.charAt(0)) {
//String t = haystack.substring(i);
//这里如果不用startWith的话,写个循环依次判断一下
if(haystack.substring(i).startsWith(needle)) {
return i;
}
}
}
return -1;
}
//第一范例大佬答案(牛批)<面试题按理不应该这么调吧>
public static int strStr1(String haystack,String needle) {
return haystack.indexOf(needle);
}
public static void main(String[] args) {
System.out.println(strStr1("hello","ll"));
}
}