可以用strstr()嗎? (被打)
但還是偷偷用了strncmp XDDDDDD
後來良心不安再寫了一個沒有用strncmp的版本
但看討論好像跟什麼KMP有關 (不是KMT國民黨XD)
好懶得動腦喔可以不要管它嗎~~(滾來滾去滾來滾去)
Implement strStr()
int strStr(char* haystack, char* needle) {
if (haystack == NULL || needle == NULL)
return -1;
int length = strlen(haystack);
int lengthIn = strlen(needle);
if(length < lengthIn)
return -1;
else if (length == 0 && lengthIn ==0)
return 0;
int i;
for(i=0;i<=length - lengthIn;i++)
{
printf("[%d][%s]\n",i,haystack+i);
#if 1
int j;
for (j=0;j<lengthIn;j++)
{
// printf("[%d][%d][%c][%c]\n",i,j,haystack[i+j],needle[j]);
if(haystack[i+j]!=needle[j])
break;
}
if (j==lengthIn)
return i;
#else
if (strncmp(haystack+i,needle,lengthIn)==0)
return i;
#endif
}
return -1;
}
[20260713更新]
姆襪哈哈哈哈哈哈哈完全看不懂以前的自己在寫什麼!!!!!
而且最佳解寫的好漂亮! 討厭XD!!!
int strStr(char* haystack, char* needle) {
int l1 = strlen(haystack);
int l2 = strlen(needle);
// if (l2>l1)
// return -1;
int i=0;
while (l1-i >= l2)
{
int j=0;
while (i<l1 && haystack[i]!= needle[j])
i++;
int ret = i;
while (i<l1 && j<l2 && (haystack[i]== needle[j]))
{
i++;
j++;
}
if (j==l2)
return ret;
else
i= ret+1;
}
return -1;
}
沒有留言:
張貼留言