LeetCode学习之实现strStr()

完整实现代码:

java 复制代码
class Solution {
    public int strStr(String haystack, String needle) {
        
        char[] hayArr = haystack.toCharArray();
        char[] neeArr = needle.toCharArray();

        int needlelen = neeArr.length;
        int haystacklen = hayArr.length;

        for(int i = 0;i<haystacklen;i++){
            if(hayArr[i] == neeArr[0]){
                if(i + needlelen > haystacklen){
                    return -1;
                }
            }
            boolean match = true; 
            for(int j = 0;j<needlelen;j++){
            if(hayArr[i+j] != neeArr[j]){
                match = false;
                break;
            }
        }
        if(match){
            return i;
        }
        
        }
        return -1;
    }
}

解题思路:

将字符串都转化为字符数组,在haystack这个数组中查找元素和needle这个数组的第一个元素相同的位置,如果有判断这个位置的索引加上needle数组的长度是否超过haystack这个数组的长度,如果超过接直接返回-1,接着设置一个标志位,用来标记是否符合判断条件,从符合条件的位置开始向后一一比较两个数组中的元素,只要有不相同的元素,将把标志设为false,并且结束当前for循环,继续检查后边的符合条件的位置,如果条件成立,标志位就会为true冰并且返回i对应的结果索引,如果都不成立,最后程序会直接返回-1

相关推荐
百锦再2 小时前
Vue高阶知识:利用 defineModel 特性开发搜索组件组合
前端·vue.js·学习·flutter·typescript·前端框架
啊阿狸不会拉杆2 小时前
《机器学习导论》第 5 章-多元方法
人工智能·python·算法·机器学习·numpy·matplotlib·多元方法
CappuccinoRose3 小时前
JavaScript 学习文档(二)
前端·javascript·学习·数据类型·运算符·箭头函数·变量声明
A9better3 小时前
C++——不一样的I/O工具与名称空间
开发语言·c++·学习
AI职业加油站3 小时前
职业提升之路:我的大数据分析师学习与备考分享
大数据·人工智能·经验分享·学习·职场和发展·数据分析
R1nG8633 小时前
CANN资源泄漏检测工具源码深度解读 实战设备内存泄漏排查
数据库·算法·cann
_OP_CHEN3 小时前
【算法基础篇】(五十六)容斥原理指南:从集合计数到算法实战,解决组合数学的 “重叠难题”!
算法·蓝桥杯·c/c++·组合数学·容斥原理·算法竞赛·acm/icpc
四谎真好看3 小时前
JavaWeb学习笔记(Day13)
笔记·学习·学习笔记·javaweb
ZH15455891313 小时前
Flutter for OpenHarmony Python学习助手实战:机器学习算法实现的实现
python·学习·flutter
TracyCoder1234 小时前
LeetCode Hot100(27/100)——94. 二叉树的中序遍历
算法·leetcode