题目:

实现 strStr() 函数。

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

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2
示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1
说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

思路:

此处是C的实现,需要用到3个指针

/**

输入: haystack = "hello", needle = "ll"
1.使用双指针,指针i指向haystack的开始位置,指针j指向needle的开始位置
2.初始i=0,j=0,t=0。haystack[i]=h,needle[l]=l。以haystack串作为外循环
3.第一次循环判断,haystack[i]&&needle[j]有值满足条件,进入第一次循环
做判断haystack[i]=h等于needle[l]=l不成立,t=t+1=1,i=1,j=0
4.第二次循环判断,haystack[i]=e,needle[l]=l,haystack[i]&&needle[j]有值满足条件,进入第二次循环
做判断haystack[i]=e等于needle[l]=l不成立,t=t+1=2,i=2,j=0
5.第三次循环判断,haystack[i]=l,needle[l]=l,haystack[i]&&needle[j]有值满足条件,进入第三次循环
做判断haystack[i]=l等于needle[l]=l成立,i=3,j=1,continue接下来的代码不走,直接进入新的循环判断
6.第四次循环判断,haystack[i]=l,needle[l]=l,haystack[i]&&needle[j]有值满足条件,进入第四次循环
做判断haystack[i]=l等于needle[l]=l成立,i=4,j=2,continue接下来的代码不走,进入第五次循环
7.第五次循环判断,haystack[i]=e,needle[l]='\0',haystack[i]&&needle[j]不满足条件,跳出循环
8.判断needle[j] == '\0'满足条件,返回t=2,结束

代码:

// 28. 实现 strStr().cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "stdlib.h" int strStr(char * haystack, char * needle){
int i = ,j =,t=i;//一定要有t
while (haystack[i]&&needle[j]){
if (haystack[i] == needle[j]){
i++;
j++;
continue;
//C 语言中的 continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。
} else{
t=t+;
i=t;
j=;
}
}
//如果needle串到了结尾的时候,代表顺利找到
if (needle[j] == '\0'){
return t;
}
//否则返回-1,没找到
return -;
} int _tmain(int argc, _TCHAR* argv[])
{ int strStr(char * haystack, char * needle);
char *str1 = (char*)malloc();
char *str2 = (char*)malloc();
// char *str = NULL; 错误的用法
scanf("%s %s",str1,str2);
int result=strStr(str1, str2);
printf("%d",result);
system("pause");
return ;
}

<每日 1 OJ> -LeetCode 28. 实现 strStr()的更多相关文章

  1. 前端与算法 leetcode 28.实现 strStr()

    # 前端与算法 leetcode 28.实现 strStr() 题目描述 28.移除元素 概要 这道题的意义是实现一个api,不是调api,尽管很多时候api的速度比我们写的快(今天这个我们可以做到和 ...

  2. Java实现 LeetCode 28 实现strStr()

    28. 实现 strStr() 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 ...

  3. 44. leetcode 28. Implement strStr()

    28. Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in ha ...

  4. [LeetCode] 28. Implement strStr() 实现strStr()函数

    Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...

  5. LeetCode 28 Implement strStr() (实现找子串函数)

    题目链接: https://leetcode.com/problems/implement-strstr/?tab=Description   Problem : 实现找子串的操作:如果没有找到则返回 ...

  6. Leetcode #28. Implement strStr()

    Brute Force算法,时间复杂度 O(mn) def strStr(haystack, needle): m = len(haystack) n = len(needle) if n == 0: ...

  7. Java [leetcode 28]Implement strStr()

    题目描述: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if ...

  8. [LeetCode] 28. Implement strStr() 解题思路

    Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...

  9. Leetcode 28——Implement strStr()

    Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...

随机推荐

  1. Django--模型层进阶

    目录 QuerySet对象 可切片 可迭代 惰性查询 缓存机制 何时查询集不会被缓存? exists()与iterator()方法 exists() iterator() 中介模型 查询优化 表数据 ...

  2. 2. vue基础-vue-cli(vue脚手架)

    1. 作用 ​ 快速创建一个基于webpack模板的项目 2. 安装工具 安装webpack:使用npm全局安装webpack,打开命令行工具,输入 npm install webpack -g,安装 ...

  3. 【MySQL】查看建表语句

    命令如下: SHOW CREATE TABLE tbl_name 例子: mysql> show create table m_zhbess_vehicle_report\G ********* ...

  4. 第一册: lesson 129。

    原文: Seventy miles an hour. question: What does Ann advise her husband to do next time? Look,Gary! Th ...

  5. python中生成JWK(json web token)

    #需要安装pyjwt import jwt import time # 使用 sanic 作为restful api 框架 def create_token(request): grant_type ...

  6. 终于有人把Elasticsearch原理讲透了!

    终于有人把Elasticsearch原理讲透了! http://developer.51cto.com/art/201904/594615.htm 小史是一个非科班的程序员,虽然学的是电子专业,但是通 ...

  7. 用Java的大整数类BigInteger来实现大整数的一些运算

    关于BigInteger的构造函数,一般会用到两个: BigInteger(String val); //将指定字符串转换为十进制表示形式: BigInteger(String val,int rad ...

  8. nvidia-smi命令执行很慢,如何改进

    初次安装好nvidia的驱动,每次执行nvidia-smi命令时,要5秒以上. 可通过如下命令进行改进: nvidia-persistenced --persistence-mode

  9. 金生芳-实验十四 团队项目评审&课程学习总结

    实验十四 团队项目评审&课程学习总结 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 作业学习目标 (1)掌握软件项目评审会流程(2)反思总结课 ...

  10. “为了交项目干杯”对“那周余嘉熊掌将得队”、“男上加男,强人所男”的Beta产品测试报告

    "为了交项目干杯"对"那周余嘉熊掌将得队"."男上加男,强人所男"的Beta产品测试报告 格式描述 课程名称:软件工程1916|W(福州大学 ...