目录
题目来源
函数介绍
说明
问题示例
提示
函数实现
用法示例
结果展示
题目来源
28. 实现 strStr() - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/implement-strstr/
函数介绍
给你两个字符串 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
提示
- 1 <= haystack.length, needle.length <= 104
- haystack 和 needle 仅由小写英文字符组成
函数实现
int strStr(char * haystack, char * needle)
{
int n = strlen(haystack);
int m = strlen(needle);
for(int i=0;i+m<=n;i++)
{
int flag=true;
for (int j = 0; j < m; j++)
{
if (haystack[i + j] != needle[j])
{
flag=false;
break;
}
}
if(flag) return i;
}
return -1;
}
用法示例
#include
#include
int strStr(char* haystack, char* needle)
{
int n = strlen(haystack);
int m = strlen(needle);
for (int i = 0; i + m <= n; i++)
{
int flag = true;
for (int j = 0; j < m; j++)
{
if (haystack[i + j] != needle[j])
{
flag = false;
break;
}
}
if (flag) return i;
}
return -1;
}
int main()
{
char haystack[] = "hello";
char needle[] = "ll";
if (strStr(haystack, needle) == -1)
printf("找不到n");
else
printf("%d", strStr(haystack, needle));
return 0;
}
结果展示
给你两个字符串 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
提示
- 1 <= haystack.length, needle.length <= 104
- haystack 和 needle 仅由小写英文字符组成
函数实现
int strStr(char * haystack, char * needle)
{
int n = strlen(haystack);
int m = strlen(needle);
for(int i=0;i+m<=n;i++)
{
int flag=true;
for (int j = 0; j < m; j++)
{
if (haystack[i + j] != needle[j])
{
flag=false;
break;
}
}
if(flag) return i;
}
return -1;
}
用法示例
#include
#include
int strStr(char* haystack, char* needle)
{
int n = strlen(haystack);
int m = strlen(needle);
for (int i = 0; i + m <= n; i++)
{
int flag = true;
for (int j = 0; j < m; j++)
{
if (haystack[i + j] != needle[j])
{
flag = false;
break;
}
}
if (flag) return i;
}
return -1;
}
int main()
{
char haystack[] = "hello";
char needle[] = "ll";
if (strStr(haystack, needle) == -1)
printf("找不到n");
else
printf("%d", strStr(haystack, needle));
return 0;
}
结果展示
输入:haystack = "hello", needle = "ll" 输出:2
输入:haystack = "aaaaa", needle = "bba" 输出:-1
输入:haystack = "", needle = "" 输出:0
- 1 <= haystack.length, needle.length <= 104
- haystack 和 needle 仅由小写英文字符组成
函数实现
int strStr(char * haystack, char * needle)
{
int n = strlen(haystack);
int m = strlen(needle);
for(int i=0;i+m<=n;i++)
{
int flag=true;
for (int j = 0; j < m; j++)
{
if (haystack[i + j] != needle[j])
{
flag=false;
break;
}
}
if(flag) return i;
}
return -1;
}
用法示例
#include
#include
int strStr(char* haystack, char* needle)
{
int n = strlen(haystack);
int m = strlen(needle);
for (int i = 0; i + m <= n; i++)
{
int flag = true;
for (int j = 0; j < m; j++)
{
if (haystack[i + j] != needle[j])
{
flag = false;
break;
}
}
if (flag) return i;
}
return -1;
}
int main()
{
char haystack[] = "hello";
char needle[] = "ll";
if (strStr(haystack, needle) == -1)
printf("找不到n");
else
printf("%d", strStr(haystack, needle));
return 0;
}
结果展示
#include#include int strStr(char* haystack, char* needle) { int n = strlen(haystack); int m = strlen(needle); for (int i = 0; i + m <= n; i++) { int flag = true; for (int j = 0; j < m; j++) { if (haystack[i + j] != needle[j]) { flag = false; break; } } if (flag) return i; } return -1; } int main() { char haystack[] = "hello"; char needle[] = "ll"; if (strStr(haystack, needle) == -1) printf("找不到n"); else printf("%d", strStr(haystack, needle)); return 0; }



