LeetCode 28 实现strStr()(C语言 只会暴力我很抱歉 代码简短)

LeetCode 28 实现strStr()(C语言 只会暴力我很抱歉 代码简短),第1张

LeetCode 28 实现strStr()(C语言 只会暴力我很抱歉 代码简短)

题目:

实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。

说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。

示例1:

输入:haystack = “hello”, needle = “ll”
输出:2

示例2:

输入:haystack = “aaaaa”, needle = “bba”
输出:-1

示例3:

输入:haystack = “”, needle = “”
输出:0

提示:

0 <= haystack.length, needle.length <= 5 * 1 0 4 10^4 104
haystack 和 needle 仅由小写英文字符组成

解题代码:

int strStr(char * haystack, char * needle){
    int haystackSize = strlen(haystack);
    int needleSize = strlen(needle);
    if(needleSize == 0)
        return 0;
    for(int i = 0; i < haystackSize; i++){
    	// 如果字符串 haystack剩余的数量小于needleSize 那肯定不存在
        if(haystackSize - i < needleSize)
            return -1;
        int ret = i;
        // 以i开始将两个字符串依次比较
        for(int j = 0; j < needleSize; j++){
            if(haystack[ret] != needle[j])
                break;
            else{
                ret++;
                // 全部匹配 也就是j == (needleSize - 1)时返回i的值
                if(j == (needleSize - 1))
                    return i;
            }
        }
    }
    return -1;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存