求字符串中最长连续递增子数字串

求字符串中最长连续递增子数字串
例:输入串为a23b6489wci6782345xy,则输出为2345
注意,只需要考虑一位数,所以对任意字符串,最长可能的输出为0123456789.

 

我的算法:

BOOL FindSub(const char pStr[], int nLen, int &StartIndex, int &EndIndex)
{
 // 对传入值进行初始化
 StartIndex = -1;
 EndIndex = -1;

 int nStartNum = -1, nPreNumIndex = -1, nPreNum=-1, nCurNum = -1;
 for(int i=0; i<nLen; i++)
 {
  if(pStr[i] >= ‘0’ && pStr[i] <= ‘9’)  // 为数字
  {
   nCurNum = pStr[i];
   if(StartIndex == -1) // 负初值
   {
    StartIndex = i;
    EndIndex = i;
   }

   if(nStartNum == -1)   // 新的数字开始了
   {
    nStartNum = i;
   }
   else
   {
    if(nPreNumIndex == i-1)   // 上一个也为数字,
    {
     if(nCurNum > nPreNum) // 并且当前值比前一个大
     {
      if(i – nStartNum > EndIndex – StartIndex)
      {
       StartIndex = nStartNum;
       EndIndex = i;
      }
     }
     else
     { 
      // 重新开始计数
      nStartNum = i;
     }
    }
   }

   // 迭代更新
   nPreNumIndex = i;
   nPreNum = nCurNum;
  }
  else
  {
   nStartNum = -1;
  }
 }// for i end

 return TRUE;
}

 

点赞