<每日 1 OJ> -LeetCode 28. 实现 strStr()
题目:
实现 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()的更多相关文章
- 前端与算法 leetcode 28.实现 strStr()
# 前端与算法 leetcode 28.实现 strStr() 题目描述 28.移除元素 概要 这道题的意义是实现一个api,不是调api,尽管很多时候api的速度比我们写的快(今天这个我们可以做到和 ...
- Java实现 LeetCode 28 实现strStr()
28. 实现 strStr() 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 ...
- 44. leetcode 28. Implement strStr()
28. Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in ha ...
- [LeetCode] 28. Implement strStr() 实现strStr()函数
Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...
- LeetCode 28 Implement strStr() (实现找子串函数)
题目链接: https://leetcode.com/problems/implement-strstr/?tab=Description Problem : 实现找子串的操作:如果没有找到则返回 ...
- Leetcode #28. Implement strStr()
Brute Force算法,时间复杂度 O(mn) def strStr(haystack, needle): m = len(haystack) n = len(needle) if n == 0: ...
- Java [leetcode 28]Implement strStr()
题目描述: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if ...
- [LeetCode] 28. Implement strStr() 解题思路
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- Leetcode 28——Implement strStr()
Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...
随机推荐
- Java操作JSON数据(4,end)--Jackson操作JSON数据
Jackson是SpringBoot默认使用的JSON处理库,它可以轻松的将Java对象转换成JSON对象,同样也可以将JSON转换成Java对象.本文介绍下Jackson的基本使用方法,包括序列化和 ...
- js设置全局变量与读取全局变量
方法1: 设置: var a = 1; 读取: a window.a window['a'] 方法2: 设置: window.b=2; 读取: b window.b window['b'] 方法3: ...
- CSS 案例
一.滑动门案例 二.小黄人案例 三.圣杯布局&双飞翼布局
- Spring中基于注解的IOC(二):案例与总结
2.Spring的IOC案例 创建maven项目 导入依赖 pom.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
- MVC4 Model View Controller分离成独立项目
适合人群:了解MVC项目的程序员 开发工具:vs2012 开发语言:C# 小项目或功能比较单一的项目可以直接新建一个MVC基本项目类型即可,但随着需求不断迭代,项目的功能模块越来越多,甚至有些模块可以 ...
- es聚合后排序
注意: es版本至少6.1以上 语句: GET 76/sessions/_search { "size": 0, "query": { "bool&q ...
- linux虚拟机网络配置
环境:虚拟机-最小化安装 centos7 主机:win10 参考配置文件: TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=stat ...
- 如何预防SQL注入
归纳一下,主要有以下几点: 1.永远不要信任用户的输入.对用户的输入进行校验,可以通过正则表达式,或限制长度:对单引号和 双"-"进行转换等. 2.永远不要使用动态拼装sql,可以 ...
- 转载_fread函数详解
fread函数详解 函数原型: size_t fread( void *buffer, size_t size, size_t count, FILE *strea ...
- Hibernate各种状态(瞬时状态、持久化状态、游离|托管状态)之间的转换