LeetCode 面试经典150题 28.找出字符串中第一个匹配项的下标

题目 :给你两个字符串 haystackneedle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1

思路:暴力(采用)或者KMP

代码

java 复制代码
class Solution {
    public int strStr(String haystack, String needle) {
        int len_h = haystack.length();
        int len_n = needle.length();
        if (len_h < len_n) // 长度haystack < needle,不可能满足,直接结束
            return -1;
        for (int i = 0; i < len_h; i++) {
            int j = i;
            if (len_h - i < len_n)  // 长度haystack剩余长度 < needle,提取结束
                return -1;
            int k;
            for (k = 0; j < i + len_n; j++, k++) {
                if (haystack.charAt(j) != needle.charAt(k))
                    break;
            }
            if (k == len_n) // 完全匹配,满足条件
                return i;
        }
        return -1;
    }
}

性能

相关推荐
郝学胜-神的一滴11 分钟前
深度学习入门基石:PyTorch张量核心技术全解析
人工智能·pytorch·python·深度学习·算法·机器学习
Frostnova丶18 分钟前
(10)LeetCode 560. 和为K的子数组
算法·leetcode·哈希算法
AI专业测评22 分钟前
2026年AI写作软件底层技术全景解析:长篇AI写网文的工程化实践与AI消痕算法基准测试
人工智能·算法·ai写作
2401_8845632428 分钟前
高性能日志库C++实现
开发语言·c++·算法
葳_人生_蕤28 分钟前
hot100——226.翻转二叉树
算法
handler0133 分钟前
基础算法:BFS
开发语言·数据结构·c++·学习·算法·宽度优先
2401_8795034133 分钟前
C++中的状态模式实战
开发语言·c++·算法
不当菜鸡的程序媛34 分钟前
神经网络——bias 偏置项(bias term) 或者截距项(intercept term)
人工智能·神经网络·算法
Aawy12034 分钟前
自定义字面量实战
开发语言·c++·算法
无尽的罚坐人生37 分钟前
hot 100 200. 岛屿数量
算法·dfs