每周一道算法题(二十三)

本周题目难度级别"Easy"

题目:给你两个字符串haystack和needle,让你找出needle在haystack中的开始的位置,若没有就返回-1

思路很简单,就是一个一个的比较,实现起来也比较简单,我就不写注释了,当然,效率太低没什么参考价值也是一个原因。

int strStr(char* haystack, char* needle) {
    if (strlen(needle) < 1) {
        return 0;
    }
    if (strlen(haystack) < 1) {
        return -1;
    }
    
    int result = -1;
    int i,j,k;
    for (i = 0; i < strlen(haystack); i ++) {
        if (haystack[i] == needle[0]) {
            result = i;

            for (j = i; (j - i) < strlen(needle); j++) {
                if (i == j) {
                    if ((strlen(haystack) - j) < (strlen(needle))) {
                        return -1;
                    }
                }
                
                if (haystack[j] != needle[j-i]) {
                    result = -1;
                    if ((i + strlen(needle)) > strlen(haystack)) {
                        return result;
                    }
                    break;
                }
            }
            if (result != -1) return result;
        }
    }
    return result;
}

需要说明的一点是,这是一道非常经典的题目,由此引出了KMP算法,这个KMP算法已经有很多文章了,有兴趣的朋友自己搜索学习即可。

版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本周题目难度级别'Easy',由于学习了一段时间Python了,所以以后'Easy'级别的题目全部用Python来...
    CrazySteven阅读 3,677评论 0 1
  • 字符串匹配(查找)算法是一类重要的字符串算法(String Algorithm)。有两个字符串, 长度为m的hay...
    曾会玩阅读 9,296评论 4 8
  • 由于本周的题目比较简单,又很相似,于是就来上两道吧,两道题的难度级别都是"Easy" 题目:给一个有序的数组,将其...
    CrazySteven阅读 3,954评论 1 4
  • 今天的算法题难度级别'Easy',不得不说'easy'就是比'medium'简单啊,哈哈。。。 上周做的题目是in...
    CrazySteven阅读 3,795评论 0 2
  • 上周的算法题太难了,没做出来,哈哈,这周的题目难度级别是“Medium” 题目:给你一个组合,找出全排列中的下一个...
    CrazySteven阅读 4,357评论 0 2

友情链接更多精彩内容