求字符串第一次出现的位置

字符串第一次出现的位置(strpos)

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。

说明

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。

示例

输入:haystack = “hello”, needle = “ll”
输出:2

输入:haystack = “aaaaa”, needle = “bba”
输出:-1

输入:haystack = “”, needle = “”
输出:0

题解
class Solution {

    /**
     * @param String $haystack
     * @param String $needle
     * @return Integer
     * 说明: 在php中strstr()函数可以接受三个参数,第一个参数为要去哪个字符串中查找, 第二个参数为要查找的字符串, 
     * 第三个参数为默认'false'的值,如果该为true就去取出要查找的字符串之前的数据,默认false是去取查找的字符串之后的数据.
     * 举例:
     * strstr('hello world aaa', 'world');   // world aaa
     * strstr('hello world aaa', 'world', true);    // hello
     * 而 strpos是返回查找的字符串在某个字符串中第一次出现的位置(下标)是多少
     */
    function strStr($haystack, $needle) {
        if((empty($haystack) && empty($needle)) || empty($needle)) {
            return 0;
        }

        $haystack_Len = strlen($haystack);
        $needle_Len = strlen($needle);
        for($i=0; $i<$haystack_Len-$needle_Len+1; $i++) {
            // 按照字符串截取的方式去依次查找
            if(substr($haystack,$i,$needle_Len) == $needle) {
                return $i;
            }
        }
        // 或
        // $a = strpos($haystack, $needle);
        // if ($a !== false) {
        //     return $a;
        // } 

        return -1;
    }
}
kmp解法
未完待续..

版权声明:本文为a1274654原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。