实现strstr
时间: 2023-07-01 22:28:30 浏览: 161
实现strstr函数,即在一个字符串中查找另一个字符串出现的位置。如果找到,返回第一次出现的位置;如果没有找到,返回-1。以下是一个简单的实现:
```java
public static int strStr(String haystack, String needle) {
if (haystack == null || needle == null) {
return -1;
}
int h = haystack.length(), n = needle.length();
for (int i = 0; i <= h - n; i++) {
int j;
for (j = 0; j < n; j++) {
if (haystack.charAt(i + j) != needle.charAt(j)) {
break;
}
}
if (j == n) {
return i;
}
}
return -1;
}
```
其中,haystack是要查找的字符串,needle是要查找的子字符串,返回值为子字符串在字符串中的起始位置。
相关问题
模拟实现strstr
strstr函数是C语言中的字符串查找函数,用于在一个字符串中查找指定的子串,并返回子串在原字符串中的起始位置。
以下是一个简单的模拟实现strstr函数的代码:
```c
#include <stdio.h>
#include <string.h>
char* my_strstr(const char* haystack, const char* needle) {
if (*needle == '\0') {
return (char*) haystack; // needle为空串,直接返回haystack
}
for (; *haystack != '\0'; haystack++) {
const char* h = haystack;
const char* n = needle;
while (*n != '\0' && *h == *n) {
h++;
n++;
}
if (*n == '\0') {
return (char*) haystack; // 子串匹配成功
}
}
return NULL; // 未找到子串
}
int main() {
char haystack[] = "Hello, World!";
char needle[] = "World";
char* result = my_strstr(haystack, needle);
if (result == NULL) {
printf("Substring not found.\n");
} else {
printf("Substring found at index: %ld\n", result - haystack);
}
return 0;
}
```
这段代码实现了一个自定义的my_strstr函数,功能与C标准库中的strstr函数相同。它通过逐个比较字符,找到子串在原字符串中的起始位置,或者返回NULL表示未找到。
注意:此处只是简单模拟实现,实际的strstr函数可能会更加复杂和优化。
C语言实现strstr
C语言中的`strstr()`函数用于在一个字符串中查找另一个字符串的出现位置,其函数原型为`char *strstr(const char *str1, const char *str2)`。其中,`str1`为要查找的字符串,`str2`为要查找的子字符串。如果找到了子字符串,则返回子字符串在字符串中第一次出现的地址;如果没有找到,则返回`NULL`。
以下是两个使用`strstr()`函数的例子:
引用:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello World"; //要扫描的字符串。
char str2[] = "llo"; //要查找的字符串
char* a = strstr(str, str2);
if (a != NULL) {
printf("%s\n", a);
printf("%p\n", a);
} else if (a == NULL) {
printf("没有找到");
printf("%p\n", a);
}
}
```
引用:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello World"; //要扫描的字符串
char str2[] = "lll"; //要查找的字符串
char* a = strstr(str, str2);
if (a != NULL) {
printf("%s\n", a);
printf("%p\n", a);
} else if (a == NULL) //a == NULL就打印
{
printf("没有找到\n");
printf("%p\n", a);
}
}
```
阅读全文