自学内容网 自学内容网

2024年10月18日练习

一: 找出字符串中第一个匹配项的下标 - 力扣(LeetCode)

这里我的思路就是用三个指针来完成,第一个指针指向haystack的起始位置,第二个指针指向

needle的起始位置,第三个指针记录如果前面不匹配,那么从haystcak新的位置开始匹配的位置。

直接看代码然后更近一步来分析:

int strStr(char* haystack, char* needle) {
    if(*haystack=='\0'||*needle=='\0'){
        return -1;
    }
    char* str1=haystack;//用来记录后面单词是否匹配的指针
    char* str2=needle;//用来记录第二个指针的起始位置
    char* tmp=str1;//用来记录haystack开始匹配的位置
    int x=0;
    while(*tmp){
        str1=tmp;
        str2=needle;
        while(*str1==*str2&&*str1!='\0'&&*str2!='\0'){
            ++str1;
            ++str2;
        }
        if(*str2=='\0'){
            
            return x;
        }
        tmp++;
        x++;
    }
    return -1;
}

这里要返回起始匹配位置的下标,我们可以发现tmp就是用来记录这个位置的,所以用x和tmp来保

持同步加加即可。

这就是第二层循环的条件的原因。


原文地址:https://blog.csdn.net/2301_81154519/article/details/143038619

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!