腾讯android秋招霸面,腾讯wxg2020秋招面经(已拿offer)

下面一段函数实现带有S和*两种通配符的字符串的匹配功能。其中:$表示长度大于0的数字串,*表示任意长度的字符串。要求:按照自己对于算法的理解填写该函数的5个空白。可以应用strcmp,strcat,strlen等字符串操作函数,不要应用其它的C或者C++的库函数。请注意:必须是完全匹配才能返回true,比如21.txt和2a.txt可以匹配2*.txt,2.tx或者2.txta不能匹配*.txt。通配符可能出现多次。函数的参数与返回值的说明请参见函数的注释 // 功能描述:表达式是否匹配成功,$表示长度大于0的数字串,*表示任意长的字符串

// 输入参数: @pRule,以'\0'结束的字符串,表示规则;

// @pStr,以'\0'结束的待匹配的字符串;

// 返回值:true:匹配成功;false:匹配失败

bool IsRegularMatching(const char* pRule, const char* pStr)

{

const char* pTempRulePtr = pRule;

const char* pTempStrPtr = pStr;

unsigned int dwCount = 0;

unsigned int dwStrLen = (unsigned int)strlen(pStr);

while ((*pTempRulePtr != '\0') && (*pTempStrPtr != '\0'))

{

switch (_______________)

{

case '*':

pTempRulePtr = pTempRulePtr + 1;

if (*pTempRulePtr == '\0')

return true;

else

{

dwStrLen = (unsigned int)strlen(pTempStrPtr);

for (dwCount = 0; dwCount < dwStrLen; dwCount++)

{

if (_______________)

return true;

}

}

break;

case '$':

if (_______________)

return false;

while ((*pTempStrPtr != '\0') && (*pTempStrPtr >= '0')

&& (*pTempStrPtr <= '9'))

pTempStrPtr++;

pTempRulePtr++;

break;

default:

if (*pTempRulePtr != *pTempStrPtr)

_______________;

++pTempRulePtr;

++pTempStrPtr;

break;

}

}

if ((*pTempRulePtr != '\0') && (*pTempStrPtr == '\0'))

{

if (strcmp(pTempRulePtr, "*") == 0)

return true;

}

else

{

_______________;

}

return false;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值