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)!