倒序搜索字符串

一个字符串由排好序的数构成,在其中查找是否存在另一个字串(也是一个数)。可以用二分法,但是要把所有字符串都转成数。

int main()
{
  char *strSrc = "1 234 56789 93785935";
  char *strTgt = "5935";
  int lenTgt = strlen(strTgt)-1;
  int indexSrc = strlen(strSrc)-1;
  int indexTgt = strlen(strTgt)-1;
  bool foundTgt = false;
  
  while (!foundTgt && indexSrc >=0)
  {
    while ((indexTgt>=0) && (indexSrc>=0) && *(strTgt+indexTgt)==*(strSrc+indexSrc))
    {
      indexTgt--;
      indexSrc--;
    }
    if ((indexTgt == -1) && (*(strSrc+indexSrc)==' ' || indexSrc == -1))
    {
      foundTgt = true; // found strTgt in strSrc
    }
    else if (indexSrc == -1)
    {
      break; // finished search strSrc
    }
    else // find next start point in strSrc and reset indices
    {
      indexTgt = lenTgt;
      while(*(strSrc+indexSrc) != ' ' && (indexSrc >= 0))
      {
        indexSrc--;
      }
      indexSrc--;
    }
  }
  cout << (foundTgt?"Found!\n":"Not found!\n");
  return 0;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值