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

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 左言 閱讀(2378) 評論(1)  編輯 收藏 引用

Feedback

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


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲日本乱码在线观看| 国产亚洲免费的视频看| 亚洲精品国产品国语在线app| 久久婷婷一区| 久久久久久久久一区二区| 国产一区二区三区成人欧美日韩在线观看 | 欧美在线播放一区| 国产三级欧美三级| 欧美在线观看日本一区| 性色av一区二区怡红| 国产亚洲精品一区二555| 久久久亚洲高清| 玖玖国产精品视频| 亚洲另类在线一区| 一区二区三区高清在线观看| 国产精品一级| 另类av一区二区| 欧美精品一区二区三区一线天视频| 99在线精品观看| 中国成人黄色视屏| 黑人巨大精品欧美一区二区小视频| 久久精品系列| 免费亚洲婷婷| 亚洲一二三区视频在线观看| 午夜日韩视频| 亚洲理论在线观看| 亚洲免费网站| 亚洲国产中文字幕在线观看| 99精品国产一区二区青青牛奶| 国产精品午夜春色av| 美女图片一区二区| 欧美日韩在线不卡一区| 久久久久久久久久久久久9999 | 亚洲黄色天堂| 国产精品成人午夜| 免费久久99精品国产自| 国产精品户外野外| 欧美韩日精品| 国产区亚洲区欧美区| 亚洲国产精品久久久久秋霞蜜臀 | 欧美精品18videos性欧美| 午夜精品久久久久久久久久久| 欧美中文在线观看国产| 妖精视频成人观看www| 欧美主播一区二区三区| 一区二区三区高清不卡| 久久精品一本久久99精品| 亚洲一区二区三区在线观看视频| 久久精品国产在热久久| 亚洲视频精品| 欧美成人一二三| 久久久久高清| 国产精品自拍网站| 日韩午夜激情电影| 亚洲国产天堂久久综合网| 性做久久久久久久久| 亚洲尤物在线| 欧美日韩亚洲国产精品| 亚洲国产精品久久久久婷婷884 | 国产欧美一区二区精品婷婷| 亚洲精品一区二区三区99| 在线观看91精品国产入口| 午夜精品福利在线观看| 亚洲欧美日本视频在线观看| 欧美精品一区三区在线观看| 亚洲风情亚aⅴ在线发布| 影视先锋久久| 欧美在线看片| 久久精品亚洲一区二区| 国产亚洲电影| 欧美一区二区视频观看视频| 亚洲欧美一级二级三级| 国产精品女主播在线观看| 99国产精品国产精品毛片| 99综合在线| 欧美日韩国产综合在线| 日韩一级在线观看| 在线一区欧美| 国产精品wwwwww| 亚洲一区二区在线观看视频| 午夜精品福利视频| 国产欧美日韩另类一区| 欧美一区二区三区在线免费观看| 久久久久久久久久久一区 | 久久成年人视频| 久久久7777| 在线成人免费视频| 欧美成人免费va影院高清| 亚洲黄色免费| 亚洲一区二区三区久久| 国产精品一区二区三区久久| 亚洲欧美美女| 免费看亚洲片| 亚洲理论在线| 国产精品网站在线播放| 久久久久久香蕉网| 亚洲国产欧美日韩| 亚洲欧美日本国产有色| 极品日韩久久| 欧美激情亚洲| 午夜久久影院| 亚洲人成精品久久久久| 午夜日韩av| 激情av一区二区| 欧美精品色一区二区三区| 中文在线资源观看视频网站免费不卡| 午夜久久黄色| 91久久久在线| 国产精品毛片在线看| 久久精品免视看| 日韩天堂在线观看| 久久综合色婷婷| 亚洲欧美色一区| 亚洲高清色综合| 国产精品丝袜白浆摸在线| 久久人人97超碰国产公开结果| 日韩小视频在线观看| 久久精品国语| 中日韩男男gay无套| 红桃视频国产一区| 国产精品www994| 男同欧美伦乱| 欧美伊久线香蕉线新在线| 一本色道88久久加勒比精品| 欧美xxx在线观看| 欧美一区成人| 亚洲午夜成aⅴ人片| 亚洲国产片色| 狠狠色狠狠色综合日日小说| 国产精品毛片| 欧美日韩精品伦理作品在线免费观看 | 91久久精品日日躁夜夜躁欧美| 国产欧美午夜| 欧美亚洲第一区| 男人插女人欧美| 久久亚洲综合色一区二区三区| 亚洲免费视频观看| 亚洲视频播放| 日韩一级大片| 日韩午夜免费视频| 亚洲美女黄色片| 亚洲成色777777女色窝| 欧美成人高清| 猫咪成人在线观看| 老巨人导航500精品| 久久免费黄色| 久久夜色精品国产噜噜av| 久久av最新网址| 欧美在线视频免费播放| 欧美一区日韩一区| 欧美一区二区福利在线| 亚洲欧美日韩一区二区| 亚洲一区二区三区影院| 亚洲一区二区少妇| 亚洲一区三区电影在线观看| 一区二区三区www| 亚洲自拍另类| 先锋影音久久| 久久激情视频| 久久综合中文色婷婷| 久久久久久久一区二区三区| 久久一区亚洲| 欧美激情按摩| 日韩小视频在线观看| 中日韩美女免费视频网址在线观看 | 加勒比av一区二区| 亚洲国产精品一区二区三区| 亚洲人成网站精品片在线观看| 亚洲毛片在线免费观看| 正在播放欧美视频| 亚洲一区二区免费看| 欧美有码在线观看视频| 久久精品国产一区二区电影| 久久久久久电影| 亚洲高清久久| 一本久久青青| 久久国产精品高清| 欧美 日韩 国产一区二区在线视频| 欧美激情一区三区| 国产精品高清在线观看| 激情综合激情| av成人国产| 久久成人一区二区| 亚洲高清视频一区二区| 99热免费精品在线观看| 欧美在线3区| 欧美日韩高清区| 国产日韩欧美一区| 亚洲精品在线观看免费| 香蕉久久夜色精品国产| 欧美国产日本高清在线| 亚洲一区二区成人| 麻豆9191精品国产| 国产精品素人视频| 亚洲欧洲一区二区天堂久久| 西西裸体人体做爰大胆久久久| 亚洲成人资源| 久久久精品一品道一区| 国产精品成人aaaaa网站| 亚洲国产欧美日韩精品|