查找substring是否以递归方式处于字符串中

时间:2012-12-06 14:35:12

标签: c recursion

我的目标是调用一个函数,如果发送的字符串有函数,函数将返回0/1 在其中发送子字符串,我不需要找到它的索引 例如:

字符串:“Hello World”
子串:“rl”
将返回1

字符串:“asssbdsd”
子串:“ab”
将返回0

所以我想出了这个解决方案:

int HasSubstr(char* mainStr, char* subStr)
{
    if (!*subStr)
    {
        return 1;
    }
    if (!*mainStr)
    {
        return 0;
    }
    if (*mainStr == *subStr)
    {
        return HasSubStr(mainStr + 1, subStr + 1);
    }
    else
    {
        while(*(subStr -1))
        {
            subStr--;
        }
        return HasSubStr(mainStr + 1, subStr);
    }
}

但它不是一个纯粹的递归,我需要它是一个纯粹的递归 ,帮助将大量应用

是的,这是家庭作业

1 个答案:

答案 0 :(得分:3)

不要试图在一个功能中适应它。

int StartsWith(const char *mainstr,const char *subStr)
{
  if (*subStr == '\0') return 1;
  if (*mainStr != *subStr) return 0;
  return StartsWith(mainStr+1,subStr+1);
}

int HasSubstr(const char *mainStr,const char *subStr)
{
  if (StartsWith(mainStr,subStr)) return 1;
  if (*mainStr == '\0') return 0;
  return HasSubstr(mainStr+1,subStr);
}