青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

qinzuoyan

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  8 Posts :: 0 Stories :: 16 Comments :: 0 Trackbacks

常用鏈接

留言簿(3)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

實現這個函數:
char* strrep(const char* src,  const char* from, const char* to)
{
}

將src中出現的所有from替換成to
時間:
10分鐘。

要求:
1. 功能正確,盡量高效
2.不能調用現有的正則表達式庫
3.可以使用strdup,malloc,realloc等函數,以及其他的c字符串 操作函數
4.估算你所寫算法的時間復雜度



#include 
<string.h>
#include 
<malloc.h>

/**
 * On success, strrep() returns a newly allocated string, which is constructed by replacing all substring `from' in `src' with `to'.
 * If `from' is a null string(with length of 1), then return a duplication of `src'.
 *
 * On failure
 *   ENOMEM Insufficient memory is available.
 * 
 * src is a null-terminated string.
 * from is a null-terminated string.
 * to is a null-terminated string.
 * 
 
*/
char* strrep(const char* src,  const char* from, const char* to)
{
  
char *des, *des_cur;
  
int from_len, to_len, src_len, des_len;
  
const char *src_cur, *src_end, *occ;
  
const char **marks; 
  
int mark_len, m, rep_count;
  
// prepare
  from_len = strlen(from);
  to_len 
= strlen(to);
  src_len 
= strlen(src);
  
if (from_len == 0)
    
return strdup(src);
  
// mark all occurence of `from' in `src'
  mark_len = 0x4;
  marks 
= (const char**)malloc(sizeof(char** mark_len);
  
if (marks == NULL)
    
return NULL;
  rep_count 
= 0;
  src_cur 
= src;
  
while((occ = strstr(src_cur, from)) != NULL) {
    rep_count
++;
    
// need more space for mark
    if (rep_count > mark_len) {
      mark_len 
<< 1;
      marks 
= (const char**)realloc(marks, mark_len);
      
if (marks == NULL)
        
return NULL;
    }
    
// mark the position
    marks[rep_count - 1= occ;
    
// find next occurence from the current position
    src_cur = occ + from_len;
  }
  
// construct new string
  des_len = src_len + (to_len - from_len) * rep_count;
  des 
= (char*)malloc(des_len + 1);
  
if (des == NULL)
    
return NULL;
  des_cur 
= des;
  src_cur 
= src;
  m 
= 0;
  
if (m < rep_count)
    occ 
= marks[m];
  
else
    occ 
= NULL;
  
while(*src_cur) {
    
if (src_cur != occ)
      
*des_cur++ = *src_cur++;
    
else {
      
// replace `from' with `to'
      strncpy(des_cur, to, to_len);
      src_cur 
+= from_len;
      des_cur 
+= to_len;
      
// more to replace?
      m++;
      
if (m < rep_count)
        occ 
= marks[m];
      
else
        occ 
= NULL;
    }
  }
  des_cur 
= '\0';
  free(marks);
  
return des;
}


posted on 2010-06-10 12:16 左言 閱讀(2370) 評論(1)  編輯 收藏 引用

Feedback

# re: 一道筆試題 - strrep()函數的實現[未登錄] 2010-06-11 10:58 expter
KMp不就行了嗎?  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美影院成年免费版| 一区二区三区视频在线看| 久久免费视频在线观看| 久久av资源网站| 欧美91福利在线观看| 欧美高清视频在线| 欧美视频在线看| 国产日韩av高清| 精品1区2区| 99精品国产在热久久婷婷| 夜夜嗨av色一区二区不卡| 亚洲制服少妇| 久久中文字幕导航| 欧美高清视频| 一区二区三区www| 欧美专区在线观看| 欧美成人免费播放| 国产精品欧美久久久久无广告| 国产欧美婷婷中文| 亚洲精品乱码久久久久久久久| 国产精品99久久久久久久久久久久 | 国产一区二区三区久久久久久久久| 国产一区二区在线观看免费| 亚洲精华国产欧美| 欧美一乱一性一交一视频| 欧美成人精品三级在线观看| 在线一区视频| 久久综合五月天婷婷伊人| 欧美性色综合| 亚洲欧洲日韩综合二区| 欧美一区二区视频在线| 亚洲欧洲久久| 欧美在线视频不卡| 欧美性生交xxxxx久久久| 亚洲高清影视| 欧美在线一级视频| av成人免费观看| 麻豆成人综合网| 午夜视频在线观看一区二区| 美女免费视频一区| 国产亚洲欧美激情| 亚洲丝袜av一区| 欧美二区在线| 欧美在线在线| 国产欧美日韩精品a在线观看| 日韩亚洲一区在线播放| 久久视频一区| 欧美中文字幕| 国产女人水真多18毛片18精品视频| 亚洲精品视频在线播放| 麻豆9191精品国产| 久久精品日产第一区二区三区| 欧美美女视频| 亚洲人成绝费网站色www| 久久米奇亚洲| 久久精品30| 国内精品久久久久影院 日本资源| 亚洲午夜激情网页| 99在线精品视频| 欧美午夜久久| 亚洲欧美日韩国产综合| 国产精品99久久久久久久女警| 欧美精品999| 999在线观看精品免费不卡网站| 免费影视亚洲| 女同性一区二区三区人了人一| 亚洲第一区色| 亚洲国产精品黑人久久久| 麻豆精品视频在线| 亚洲精品国产拍免费91在线| 亚洲国产1区| 欧美激情一级片一区二区| 亚洲美女av在线播放| 日韩一级黄色片| 国产精品美女在线| 久久久久国内| 欧美aaa级| 亚洲视频在线播放| 亚洲欧美综合国产精品一区| 国产婷婷一区二区| 欧美顶级艳妇交换群宴| 欧美激情网友自拍| 亚洲综合首页| 久久都是精品| 一级日韩一区在线观看| 亚洲欧美日韩网| 在线观看日产精品| 亚洲精品综合在线| 国产亚洲一区二区三区| 亚洲第一页中文字幕| 欧美视频一区二| 久久亚洲国产精品一区二区| 欧美精品久久久久久| 亚洲欧美成人一区二区在线电影| 欧美一区国产二区| 99国产精品视频免费观看一公开| 亚洲香蕉成视频在线观看| 好看的日韩av电影| 日韩视频在线一区二区三区| 欧美夜福利tv在线| 日韩视频中午一区| 国产九九精品视频| 欧美不卡视频一区| 欧美日韩免费观看一区二区三区 | 日韩午夜视频在线观看| 一区二区欧美精品| 亚洲国产精品久久久| 亚洲午夜精品久久久久久浪潮| 韩国视频理论视频久久| 99精品国产在热久久婷婷| 国产亚洲精品一区二区| 亚洲国产欧美一区二区三区久久 | 亚洲欧美日韩网| 亚洲免费成人| 久久精品视频va| 亚洲欧美激情四射在线日 | 黄色精品网站| 亚洲午夜高清视频| 99爱精品视频| 噜噜噜在线观看免费视频日韩| 亚洲欧美久久| 欧美人与性动交cc0o| 欧美va亚洲va国产综合| 国产午夜精品在线| 香蕉久久夜色精品| 午夜精品久久久久| 国产精品福利av| 亚洲九九九在线观看| 亚洲欧洲日夜超级视频| 久久影院亚洲| 免费成人毛片| 一区二区在线视频| 久久精品国产久精国产思思| 午夜精品久久久久久99热| 欧美日韩网址| 日韩视频专区| 亚洲免费视频中文字幕| 欧美性大战久久久久久久蜜臀| 亚洲人体大胆视频| 99精品热视频| 欧美体内she精视频| 一本久道久久综合婷婷鲸鱼| 99国产精品私拍| 国产精品swag| 午夜综合激情| 牛牛国产精品| 老司机67194精品线观看| 国产精品第十页| 欧美激情一区在线| 91久久精品日日躁夜夜躁国产| 久久深夜福利免费观看| 久色成人在线| 亚洲精品久久久蜜桃| 欧美久久久久中文字幕| 日韩视频在线免费| 亚洲你懂的在线视频| 国产午夜精品全部视频播放 | 亚洲精品在线视频观看| 欧美精选午夜久久久乱码6080| 日韩一二三区视频| 亚洲男女毛片无遮挡| 国产亚洲午夜| 欧美成人69| 亚洲男同1069视频| 欧美xx视频| 亚洲图片欧洲图片av| 国产网站欧美日韩免费精品在线观看 | 久久国内精品自在自线400部| 欧美成人精品高清在线播放| 亚洲精品在线免费观看视频| 国产精品高潮粉嫩av| 欧美在线三区| 99视频在线观看一区三区| 亚洲欧美视频一区二区三区| 韩日成人在线| 欧美日韩中文精品| 久久久综合视频| 亚洲天堂成人在线视频| 欧美黑人一区二区三区| 性色av一区二区三区| 亚洲欧洲在线观看| 国产亚洲成av人片在线观看桃| 美日韩免费视频| 欧美亚洲综合久久| 中文日韩在线视频| 亚洲激情成人| 麻豆精品视频| 久久精品国产欧美亚洲人人爽| 一区二区三区av| 亚洲级视频在线观看免费1级| 国产欧美一二三区| 国产精品va在线| 欧美日本韩国一区二区三区| 久久夜色精品国产噜噜av| 午夜精品视频| 亚洲女同同性videoxma| 99ri日韩精品视频| 日韩亚洲欧美在线观看| 亚洲国产你懂的| 欧美激情精品久久久|