字符串第一次出现的位置(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版权协议,转载请附上原文出处链接和本声明。