码迷,mamicode.com
首页 > 编程语言 > 详细

关于有序二维矩阵查找和字符串替换的两道算法题

时间:2015-11-11 11:44:47      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

最近看一本书上写到的两个面试题 于是实现了一下 感觉思路很好,大牛略过 :

1、对于一个二维矩阵,从左到右  从上到下 都是递增的,如何判断一个值是否在矩阵内部?(C实现  实现复杂度 O(n))

bool FindInTwoDimensionalMatrix(int*pMatrix,int iRows,int iCols,int iFindVal)
{
   bool bFind=false ;
   if(pMatrix==0||iRows<=0||iCols<=0)
      return bFind ;
   int iRow=0,iCol=iCols-1;
   while(iRow<iRows&&iCol>=0)
   {
       if(pMatrix[iRow*iCols+iCol]==iFindVal)
       {
         bFind=true ;
         break;
       }else if(pMatrix[iRow*iCols+iCol]>iFindVal)
          --iCol;
        else
          ++iRow;
   }
   return bFind ;
}

2、在一个内存足够大的空间中,存储的 一串字符序列,替换其中的空格为  %20?(C实现,时间复杂度 O(n))

void  ReplaceCharInEnoughMemory(char*pStr)
{
      if(pStr==0)
        return ;
      //计算空格个数
      int nSpace=0 ;
      int nLen=strlen(pStr);
      char *pBehand,*pFront;
      char *pTem=pStr;
      //计算空格个数
      for(;;)
      {
        //0 结尾  ‘\0‘
        if(*pTem==‘\0‘)
           break;
        else if(*pTem==0x20)
        {
          ++nSpace;
        }
        pTem++;
      }
      //后面等于 ‘\0‘需要添上
      pBehand=pStr+nLen-1+nSpace*2;
      pFront=pStr+nLen-1;
      for(;;)
      {
         if(*pFront!=0x20){
          *pBehand=*pFront ;
         }else{
           *pBehand=‘0‘;
           *(--pBehand)=‘2‘;
           *(--pBehand)=‘%‘;
         }
         if(pFront==pStr)
            break ;
         pBehand--;
         pFront--;
      }
      //结尾
      *(pStr+nLen-1+nSpace*2+1)=‘\0‘;
}

好了 就写到这里。


版权声明:本文为博主原创文章,未经博主允许不得转载。

关于有序二维矩阵查找和字符串替换的两道算法题

标签:

原文地址:http://blog.csdn.net/yue7603835/article/details/49778833

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!