实现 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. 当面试官问你sql优化的时候。。。

    当面试官问你有关sql优化的问题时,直接拿笔写给他: 8-select 9-distinct<column_list> 1-from left_table 3-<join_type& ...

  2. oracle创建用户、表空间、临时表空间、分配权限步骤详解

    首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by ...

  3. Oracle特殊查询 行列倒转 分页

    --查询工资最高的前三名 (分页的感觉)select * from(select * from emp order by sal desc) twhere rownum <=3--查询工资最高的 ...

  4. mysql数据库的导入导出命令

    1.备份一个数据库 mysqldump -h localhosot -uroot -ppassword 数据库名>数据库所在路径(路径+数据库名.sql) 注意:导出的数据库文件.sql文件不能 ...

  5. 虚拟机重启网络服务失败,当查看状态显示错误Failed to start LSB......

    重启网络失败截图 从本质上来看出现这样的问题,是因为拷贝过来的虚拟机重新分配了网卡MAC地址.这样造成的结果是配置文件中MAC与当前网卡MAC不一致.所以只需要修改一下配置文件即可. 用ip addr ...

  6. jsp小基础归纳

    JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译为.class文件,而我们在访问jsp时,处理请求的就是那个翻译后的类. 1 ...

  7. Python中级 —— 03进程与线程

    多任务的实现有3种方式: 多进程模式: 多线程模式: 多进程+多线程模式. ** 进程: ** 不同任务,例如打开一个写字本,就是开启一个新进程. 多进程 Unix/Linux操作系统提供了一个for ...

  8. CSS 清楚浮动总结

    1.clear属性. 注:设置子元素(伪元素或DIV等其它元素) 2.触发BFC. 注:根元素HTML float不为none overflow不为visibile display为inline-bl ...

  9. thinkPHP写txt日志文件

     file_put_contents(DATA_PATH.'文件名.txt', '收到请求:' . date('Y-m-d H:i:s') . PHP_EOL . '通知信息:' . $显示的变量名. ...

  10. php实现姓名按首字母排序的类与方法

    php将名字按首字母进行排序 <?php public function getFirstChar($s){ $s0 = mb_substr($s,0,3); //获取名字的姓 $s = ico ...