Implemente la función strStr ().
Dado un cordel de pajar y un cordel de aguja, encuentre la primera posición donde aparece el cordel de aguja en el cordel de pajar (comenzando en 0). Si no existe, devuelve -1.
Ejemplo 1:
Entrada: haystack = "hola", aguja = "ll"
Salida: 2
Ejemplo 2:
Entrada: haystack = "aaaaa", aguja = "bba"
Salida: -1
Descripción:
Cuando la aguja es una cuerda vacía, ¿qué valor debemos devolver? Esta es una buena pregunta en una entrevista.
Para este problema, deberíamos devolver 0 cuando la aguja es una cadena vacía. Esto es consistente con la definición de strstr () en lenguaje C e indexOf () en Java.
Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/implement-strstr Los
derechos de autor pertenecen a la red de deducción. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.
Se puede resolver fácilmente usando el algoritmo kmp
class Solution {
public int strStr(String haystack, String needle) {
int hLen = haystack.length(), nLen = needle.length();
for (int i = 0; i <= hLen - nLen; i++){ // 等于,适用于两者长度相等的情况下(包含都为 ”“)
int j = 0;
for (;j < nLen; j++){
if (haystack.charAt(i + j) != needle.charAt(j)) {
break;
}
}
if (j == nLen){
return i;
}
}
return -1;
}
};