Monday, October 16, 2006

微软算法题第4题

  4.请编写能直接实现strstr()函数功能的代码。

参考答案:
  // 使用最简单的字符串匹配。可以改进为KMP匹配算法
  int StrStr(char a[], int alen, char pat[], int patlen)
  {
    int i = 0;
    int j = 0;
    while (i < alen && j < patlen)
    {
      if (a[i] == pat[j])
      {
        ++i;
        ++j;
      }
      else
      {
        i = i - j + 1;
        j = 0;
      }
    }
    if ( j >= patlen)
      return (i - patlen + 1); //位置
    else
      return 0; //没有匹配
  }

其它类似函数:(注意:都没有加错误判断!!!)
  void StrCpy(char *dst, const char *src)
  {
    while (*dst++ = *src++)
      ;
  }

  int StrCmp(const char *s, const char *t)
  {
    for (; *s == *t; s++, t++)
      if ( '\0' == *s)
        return 0;
    return (*s - *t);
  }
完整代码见 程序员讨论组

No comments: