实现 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() 定义相符。


思路:以haystack="mississippi" ,needle="issip"为例子..

1.判断needle长度是否小于haystack

2.判断2个字符串为空的情况

3.判断正常情况

  a.如果haystack(i)==needle(j),则j++。若不相同,则i需要回到之前判断的数的后一位,也就是+1。

  如:

      i:        0   1    2    3   4   5  6   7  8   9   10(数组下标)

haystack :      m   i    s    s    i   s   s   i   p    p   i

needle    :             i    s    s    i   p    

haystack(5)与needle(5)不相同,则又要重新循环,既,haystack(2)开始循环。

      i:       0  1    2    3   4   5  6   7  8   9   10(数组下标)

haystack :      m   i    s    s   i   s   s   i   p    p   i

needle    :                  i     s   s   i    p    

     .............以此类推

      i:       0  1    2    3   4   5  6   7  8   9   10(数组下标)

haystack :      m   i    s    s   i   s   s   i   p    p   i

needle    :                             i   s   s    i   p    

如果, j的长度与needle相同,则返回 i-needle的长度。

class Solution {
public:
int strStr(string haystack, string needle) {
if (needle.size()==)
return ;
if (needle.size() > haystack.size())
return -;
int j=;//用来指向needle的字符串
int i=;
for (i = ; i < haystack.size(); i++) {
if (j==needle.size()){//如果已经匹配完成则返回
return i - needle.size();
}
if (haystack[i] == needle[j]){
j++;
} else{
i -= j;
j=;
}
}
//用来判断单个字母的时候,j++之后j=1,i=1;
if (j==needle.size()){
return i - needle.size();
}
return -;
}
};

  

leetcode28_C++实现strStr()函数的更多相关文章

  1. strstr 函数的实现

    strstr函数:返回主串中子字符串的位置后的所有字符. #include <stdio.h> const char *my_strstr(const char *str, const c ...

  2. strstr函数的用法

    C语言函数 编辑 包含文件:string.h 函数名: strstr 函数原型:      extern char *strstr(char *str1, const char *str2); 语法: ...

  3. C语言中strstr函数

    头文件:#include <string.h> strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:    char *strstr( char *str, char * ...

  4. strstr 函数用法

    strstr 编辑 strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. C语言函数 编辑 ...

  5. leetcode5 Implement strstr() 实现strstr函数功能

    Implement strstr() 实现strstr函数功能 whowhoha@outlook.com Question: Implement strstr(). Returns the index ...

  6. strstr函数与strcmp函数

    1.strstr函数主要完成在一个字串中寻找另外一个字串 函数实现工程如下:摘自http://baike.baidu.com/link?url=RwrzOxs0w68j02J2uQs5u1A56bEN ...

  7. C strstr() 函数

    包含文件:string.h 函数名: strstr 函数原型:extern char *strstr(const char *str1, const char *str2); 语法:* strstr( ...

  8. C语言strstr()函数:返回字符串中首次出现子串的地址

    今天又学到了一个函数 头文件:#include <string.h> strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:    char *strstr( char *s ...

  9. 使用PHP的strstr()函数来统计一段字符串中元音字母的个数(区分大小写)

    <?php/**练习:统计一段字符串中所有元音字母的个数(区分大小写)*/$str='This is a test file.'; //原始字符串echo $str.'<br>'; ...

随机推荐

  1. jQuery 表单元素取值与赋值方法总结

    一.普通文本框的赋值与取值 1.1.1赋值 <h2>jQuery 表单元素取值与赋值方法总结</h2> <input type="text" clas ...

  2. [微信小程序] js变量名称写活

    function create_variable(num){ var name = "test_"+num; //生成函数名 window[name] = 100; window[ ...

  3. 安装Oracle 18.4 RAC 遇到ORA-40238报错

    场景: Aix 7.2 上安装Oracle 18.4 RAC 执行root.sh脚本,ASM failed to start !查看日志文件:ORA-40238: invalid linear alg ...

  4. Oracle条件查询

    Oracle条件查询 参考网址:http://www.oraclejsq.com/article/010100259.html Oracle条件查询时经常使用=.IN.LIKE.BETWEEN...A ...

  5. VS2017 编译 QT5.10.1 X64位 静态库 MT

    参考文章 https://blog.csdn.net/Devout_programming/article/details/78827112 准备工作* Supported compiler (Vis ...

  6. 两种方法实现Linux不活动用户登录超时后自动登出

    在平常的工作中,windows系统使用的比较多一些,身边的很多同事都会对自己的电脑进行一些个性化设置,比如离开一段时间后自动锁屏.自动关闭屏幕.自动注销当前登录等.在windows下可以这样操作,那么 ...

  7. MongoDB DBA 实践2-----常用语句与索引

    一.mongodb常用语句 1.数据库database 1). 查看当前选择的数据库,默认是test 2).有则使用这个数据库,没有就创建 3).查看数据库,默认有admin.local和" ...

  8. Spark Streaming 进阶与案例实战

    Spark Streaming 进阶与案例实战 1.带状态的算子: UpdateStateByKey 2.实战:计算到目前位置累积出现的单词个数写入到MySql中 1.create table CRE ...

  9. PAT (Basic Level) Practice (中文)1001

    1001 害死人不偿命的(3n+1)猜想 (15 分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复 ...

  10. jquery ajax实例教程和一些高级用法

    jquery ajax的调用方式:jquery.ajax(url,[settings]),jquery ajax常用参数:红色标记参数几乎每个ajax请求都会用到这几个参数,本文将介绍更多jquery ...